Initial release of pl_editor, the page layout and title block editor.

This commit is contained in:
jean-pierre charras 2013-07-19 20:27:22 +02:00
parent ba16d9e763
commit 50743cf3ba
123 changed files with 24073 additions and 2006 deletions

View File

@ -375,6 +375,7 @@ add_subdirectory(kicad)
add_subdirectory(pcbnew)
add_subdirectory(pcbnew/pcad2kicadpcb_plugin)
add_subdirectory(polygon)
add_subdirectory(pagelayout_editor)
add_subdirectory(potrace)
add_subdirectory(bitmap2component)
add_subdirectory(pcb_calculator)
@ -392,6 +393,7 @@ add_dependencies( pcbcommon boost )
add_dependencies( 3d-viewer boost )
add_dependencies( pcad2kicadpcb boost )
add_dependencies( polygon boost )
add_dependencies( pl_editor boost )
#############

View File

@ -668,6 +668,7 @@ INPUT = kicad \
3d-viewer \
common \
gerbview \
pagelayout_editor \
include \
polygon \
potrace
@ -703,8 +704,8 @@ RECURSIVE = YES
# Note that relative paths are relative to the directory from which doxygen is
# run.
EXCLUDE = include/boost \
polygon/kbool
EXCLUDE = include/boost
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded

View File

@ -43,9 +43,6 @@
#
# 1) inkscape - command line mode is used, must be on your PATH
# 2) pngcrush - this program must be on your PATH
# 3) Under Windows only:
# dos2unix - to convert End Of Lines to unix EOL (CRLF to LF)
# this program must be on your PATH
#
# lower case is used for local variables, uppercase for global variables
@ -71,21 +68,8 @@ option( MAINTAIN_PNGS
"Set to true if you are a PNG maintainer and have the required tools given in the bitmaps_png/CMakeLists.txt file (default OFF)."
OFF)
# Used Only to maintain PNG files (and therefore to recreate .cpp files)
# The png2cpp creates files with native End of Line format.
# To avoid mixed EOF formats in these .cpp files, it is good to
# convert them in Unix EOL format (LF)
# Under Windows, the well known dos2unix.exe does the conversion
# It is installed with MinGW and MSYS.
# It is very easy to install (just an executable to copy in a known path) if it is missing
if( WIN32 )
set( CONVERT_EOL true )
set( eol2unix_converter dos2unix )
else()
set( CONVERT_EOL false )
endif( WIN32 )
include_directories(BEFORE ${INC_BEFORE})
include_directories(
@ -431,6 +415,12 @@ set( BMAPS_MID
pad
pad_dimensions
pads_mask_layers
pagelayout_load
pagelayout_load_default
pagelayout_new
pagelayout_recent
pagelayout_normal_view_mode
pagelayout_special_view_mode
palette
part_properties
paste
@ -555,6 +545,7 @@ set( BMAPS_BIG
icon_pcbcalculator
libedit_icon
viewlibs_icon
icon_pagelayout_editor
)
@ -596,25 +587,6 @@ endfunction()
# Function png2cpp
# converts a single *.png to *.cpp
if( CONVERT_EOL )
function( png2cpp inputFile outFile )
add_custom_command(
OUTPUT ${outFile}
COMMAND rm -f ${outFile}.tmp
COMMAND ${CMAKE_COMMAND} -DinputFile=${inputFile} -DoutCppFile=${outFile}
-P ${CMAKE_MODULE_PATH}/PNG2cpp.cmake
DEPENDS ${inputFile} ${CMAKE_MODULE_PATH}/PNG2cpp.cmake
POST_BUILD
COMMAND ${eol2unix_EXECUTABLE} ${outFile}
COMMENT "Creating (with unix eol) ${outFile}"
)
endfunction()
else( CONVERT_EOL )
function( png2cpp inputFile outFile )
add_custom_command(
OUTPUT ${outFile}
@ -627,8 +599,6 @@ function( png2cpp inputFile outFile )
)
endfunction()
endif(CONVERT_EOL)
# Function bitmap_dir
# converts all the basenames in bmapList found in hardcoded 'sources' dir

View File

@ -8,124 +8,124 @@
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, 0x07, 0x39, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x96, 0x7b, 0x4c, 0x53,
0x79, 0x16, 0xc7, 0xbb, 0x8e, 0x3b, 0x31, 0x71, 0xb2, 0xf3, 0xcf, 0x26, 0xbb, 0x26, 0x33, 0x09,
0x4e, 0x8c, 0xbb, 0x59, 0x35, 0xbe, 0xe2, 0x38, 0x31, 0x71, 0xc6, 0xa8, 0x19, 0x75, 0x13, 0xcd,
0x4e, 0x5c, 0x8d, 0x6f, 0x0d, 0xa2, 0x46, 0xa3, 0x6b, 0xcc, 0xaa, 0xa3, 0xa2, 0xc0, 0xaa, 0xa8,
0xc4, 0xc0, 0x28, 0x3b, 0xc8, 0x5b, 0x1e, 0x03, 0x15, 0x28, 0xef, 0x37, 0x7d, 0xd9, 0x22, 0x2d,
0x85, 0x02, 0xad, 0xa5, 0x2f, 0x4a, 0x29, 0xa5, 0x2d, 0x8f, 0xb6, 0x20, 0xb4, 0xe5, 0xd2, 0xc7,
0xbd, 0xf7, 0x77, 0xf6, 0x5c, 0x22, 0x04, 0xd6, 0xcd, 0x66, 0x77, 0x27, 0xd9, 0x9b, 0x7c, 0x93,
0x7b, 0xfb, 0xbb, 0xf9, 0x7d, 0x7a, 0xce, 0xf9, 0x9e, 0x73, 0x7f, 0x3c, 0x00, 0xe0, 0xfd, 0x3f,
0xf4, 0xc1, 0x0f, 0xe7, 0xcf, 0x9f, 0x4f, 0xba, 0x75, 0xeb, 0x56, 0xfd, 0xb1, 0x63, 0xc7, 0x12,
0xf6, 0xec, 0xd9, 0xf3, 0xe5, 0xe6, 0xcd, 0x9b, 0x7f, 0xb9, 0x63, 0xc7, 0x8e, 0xa5, 0x97, 0x2f,
0x5f, 0xe6, 0x9f, 0x39, 0x73, 0xe6, 0xd9, 0xee, 0xdd, 0xbb, 0x3f, 0xfd, 0xd9, 0x20, 0xdc, 0xf0,
0x93, 0xba, 0xba, 0x3a, 0x13, 0xde, 0x77, 0xf8, 0xfd, 0x7e, 0xbd, 0xd1, 0x68, 0xb4, 0x94, 0x95,
0x95, 0xf5, 0xde, 0xbb, 0x77, 0xaf, 0xef, 0xf9, 0xf3, 0xe7, 0x53, 0x62, 0xb1, 0xd8, 0x5e, 0x5a,
0x5d, 0x6b, 0xaf, 0x94, 0x76, 0x9a, 0xa4, 0xbd, 0x76, 0x91, 0x50, 0x67, 0x7f, 0x29, 0xd6, 0x5a,
0x2f, 0xe0, 0x3b, 0x1f, 0xfd, 0x57, 0xa0, 0xfd, 0xfb, 0xf7, 0x7f, 0xdb, 0xdf, 0xdf, 0x6f, 0xc1,
0xfb, 0x82, 0x98, 0x98, 0x18, 0xcd, 0xb9, 0x73, 0xe7, 0xb4, 0xe5, 0xe5, 0xe5, 0x8a, 0x91, 0x91,
0x91, 0x69, 0xa7, 0x7b, 0x22, 0xa8, 0x32, 0x0f, 0x91, 0x26, 0xfd, 0x28, 0xe1, 0xab, 0x47, 0x49,
0xa6, 0x6c, 0x80, 0xc9, 0x91, 0x5b, 0x7d, 0x95, 0x5d, 0x4e, 0xb7, 0xa4, 0xbb, 0xcf, 0x53, 0xad,
0x32, 0xfd, 0xed, 0x3f, 0x06, 0x61, 0xba, 0x52, 0x28, 0x8a, 0x7a, 0xdb, 0xd3, 0xd3, 0x53, 0x81,
0xd1, 0xd9, 0xe2, 0xe2, 0xe2, 0x94, 0xf1, 0xf1, 0xf1, 0x43, 0xb9, 0x7c, 0x01, 0x23, 0x33, 0x0d,
0xb3, 0xf9, 0xea, 0x71, 0xba, 0x54, 0xe7, 0x8b, 0x54, 0x19, 0x02, 0xb4, 0x64, 0x90, 0xa5, 0x9b,
0xfb, 0x29, 0x36, 0xff, 0x8d, 0x83, 0x49, 0x69, 0xd0, 0x4f, 0x0b, 0xde, 0x18, 0x83, 0x3f, 0xd5,
0xbe, 0x36, 0xec, 0xda, 0xb5, 0x6b, 0xf5, 0xbf, 0x04, 0x9d, 0x3d, 0x7b, 0xf6, 0xfb, 0xac, 0xac,
0xac, 0xae, 0x9c, 0x9c, 0x1c, 0x75, 0x7a, 0x7a, 0xba, 0x0f, 0x23, 0xf0, 0xa7, 0xa6, 0xa6, 0x52,
0xb1, 0xb1, 0xb1, 0x70, 0xf7, 0xee, 0x5d, 0x48, 0x4e, 0x79, 0x46, 0x5a, 0xd4, 0x66, 0x48, 0x93,
0x39, 0xc9, 0x0b, 0xa1, 0x09, 0x32, 0xa5, 0x56, 0x92, 0x21, 0x34, 0x92, 0x7c, 0x59, 0x1f, 0xe1,
0x2b, 0x6c, 0x4c, 0x49, 0xbb, 0x8d, 0xcd, 0x68, 0xe9, 0x25, 0xf5, 0x86, 0x49, 0xba, 0x56, 0xd5,
0xc7, 0xd4, 0x8a, 0x94, 0xfe, 0xc3, 0x87, 0x0f, 0xff, 0xe5, 0x03, 0xd0, 0x93, 0x27, 0x4f, 0xc4,
0x78, 0x63, 0xf4, 0xf9, 0x7c, 0x7a, 0x93, 0xc9, 0x14, 0x72, 0xb9, 0x5c, 0x81, 0xae, 0xae, 0x2e,
0x5a, 0xab, 0xd5, 0x02, 0x27, 0x91, 0xb2, 0x07, 0x2a, 0x7b, 0xfd, 0xa4, 0xc6, 0x18, 0x80, 0xe6,
0x81, 0x10, 0x34, 0x9b, 0x7d, 0xf0, 0xc6, 0x1e, 0x84, 0x56, 0xab, 0x1f, 0xba, 0xdd, 0xc0, 0x74,
0x0d, 0x87, 0x48, 0xbd, 0xc6, 0xc5, 0x0a, 0x4d, 0xef, 0x82, 0x52, 0x2b, 0x15, 0xa9, 0x14, 0x2a,
0xc9, 0xd1, 0xa3, 0x47, 0x0b, 0x3e, 0x00, 0x3d, 0x7e, 0xfc, 0x58, 0x82, 0x37, 0x3a, 0x04, 0xd8,
0x3b, 0x3a, 0x3a, 0xe8, 0xce, 0xce, 0x4e, 0x4a, 0x20, 0x10, 0x90, 0xfa, 0xfa, 0x7a, 0x68, 0x6b,
0x6b, 0x83, 0x86, 0xd6, 0x6e, 0x28, 0x33, 0x04, 0x49, 0xae, 0x6c, 0x00, 0x64, 0x03, 0x14, 0x08,
0x4d, 0x93, 0x20, 0x34, 0x78, 0xa0, 0x45, 0x37, 0x02, 0x6f, 0x3d, 0x84, 0xe9, 0x1c, 0x0a, 0x80,
0x58, 0x3f, 0xca, 0x56, 0xa9, 0x2c, 0xc1, 0x1e, 0x37, 0xf8, 0x6a, 0x5a, 0x7b, 0xc9, 0x4f, 0x82,
0xba, 0xc9, 0xab, 0x57, 0xaf, 0xd6, 0xed, 0xdb, 0xb7, 0xef, 0x0f, 0xf3, 0xa0, 0x47, 0x8f, 0x1e,
0xcd, 0x82, 0x6a, 0x6b, 0x6b, 0xa7, 0xd1, 0x59, 0x04, 0xc5, 0x66, 0x67, 0x67, 0x43, 0x55, 0x55,
0x15, 0xe0, 0x6f, 0x50, 0x27, 0xeb, 0x82, 0x97, 0x8a, 0x61, 0x68, 0x30, 0xf9, 0xa1, 0x50, 0xa2,
0x07, 0x85, 0xcd, 0x0f, 0x62, 0x83, 0x9b, 0x08, 0x75, 0x2e, 0xe8, 0x9f, 0x04, 0xa6, 0x7b, 0xc8,
0x07, 0x9d, 0x03, 0xe3, 0x6c, 0x73, 0xa7, 0x25, 0x82, 0xcf, 0xfe, 0x06, 0x95, 0x89, 0x29, 0x6f,
0x90, 0x8f, 0xd1, 0x34, 0xdd, 0xd9, 0xda, 0xda, 0x6a, 0xbe, 0x78, 0xf1, 0x62, 0x09, 0xd6, 0xfb,
0xb3, 0x79, 0x10, 0x5a, 0x34, 0xf2, 0xf0, 0xe1, 0x43, 0xe0, 0x94, 0x98, 0x98, 0x38, 0x0b, 0xca,
0xcf, 0xcf, 0x87, 0x1a, 0x71, 0x3b, 0xe4, 0xb5, 0x39, 0xa0, 0xc9, 0xe4, 0x83, 0xa2, 0xd7, 0x06,
0x50, 0x0c, 0x06, 0xc8, 0x6b, 0xc3, 0x28, 0x51, 0xf4, 0xb9, 0xc9, 0xe0, 0x14, 0x30, 0xc6, 0x11,
0x3f, 0x18, 0x9c, 0x93, 0x6c, 0xbb, 0xc1, 0x11, 0x71, 0x06, 0xd8, 0x99, 0xc6, 0x36, 0x2d, 0x9d,
0xf8, 0x34, 0xdd, 0xcf, 0x39, 0x17, 0x55, 0x16, 0x0a, 0x85, 0x74, 0x0f, 0x1e, 0x3c, 0xe8, 0xe4,
0xe1, 0xc6, 0xb3, 0xa0, 0x8a, 0x8a, 0x0a, 0x66, 0x0e, 0xc4, 0x09, 0xd3, 0x07, 0xc5, 0xc5, 0xc5,
0x50, 0x51, 0x2f, 0x81, 0x32, 0x95, 0x1d, 0xe4, 0x83, 0x41, 0xe0, 0xcb, 0xf4, 0xa0, 0xb4, 0x4e,
0x82, 0x54, 0x37, 0x04, 0x6a, 0xeb, 0x18, 0x0c, 0x78, 0x67, 0xc8, 0xd0, 0xc4, 0x0c, 0xb1, 0xb9,
0xfd, 0xac, 0x6e, 0xc0, 0x45, 0x7b, 0x28, 0x36, 0x5c, 0x23, 0x52, 0x30, 0x99, 0xb9, 0xfc, 0x81,
0xf7, 0xa0, 0x82, 0x70, 0x38, 0xdc, 0x75, 0xe1, 0xc2, 0x85, 0xea, 0x59, 0x50, 0x24, 0x12, 0x31,
0x57, 0x56, 0x56, 0xb2, 0xff, 0x0c, 0xe2, 0xf3, 0xf9, 0x50, 0x5b, 0xd7, 0x08, 0xaf, 0x1a, 0xda,
0x40, 0xd2, 0xef, 0x07, 0xfe, 0xeb, 0x5e, 0xd0, 0x38, 0xfd, 0xd0, 0xa6, 0x1f, 0x02, 0xf3, 0xc8,
0x14, 0xb1, 0x7b, 0xa7, 0xc1, 0x35, 0x49, 0x81, 0x6b, 0x22, 0x40, 0x5c, 0x13, 0xfe, 0xf0, 0xd8,
0xd4, 0x0c, 0x93, 0x96, 0x51, 0x44, 0x02, 0x81, 0x00, 0xff, 0x3d, 0x48, 0x20, 0x12, 0x89, 0x4c,
0x98, 0xba, 0xdf, 0xcf, 0x82, 0x70, 0xc1, 0x59, 0x5d, 0x5d, 0xcd, 0x5e, 0xb9, 0x72, 0x05, 0x4e,
0x9f, 0x3e, 0x0d, 0xd8, 0x4f, 0x70, 0xff, 0xfe, 0x7d, 0x48, 0x4b, 0x4b, 0x03, 0xce, 0x14, 0x29,
0xa9, 0x59, 0x50, 0x2e, 0x52, 0x43, 0x99, 0xdc, 0x08, 0x72, 0x1d, 0x46, 0xa7, 0xb1, 0x80, 0xda,
0x38, 0x08, 0x0e, 0xaf, 0x1f, 0xbc, 0x81, 0x10, 0xb8, 0x7d, 0xd3, 0x30, 0x1e, 0x98, 0xa1, 0x6b,
0x9a, 0x64, 0xe4, 0xc7, 0xb4, 0x3c, 0xc7, 0x5c, 0x34, 0xd8, 0x93, 0x1a, 0x1c, 0x5b, 0x25, 0xb3,
0x66, 0xe0, 0x40, 0xd8, 0xf9, 0xe3, 0x38, 0xcb, 0xc2, 0x3c, 0xec, 0xdf, 0x39, 0xad, 0x5c, 0xb9,
0x12, 0x56, 0xaf, 0x5e, 0x0d, 0x68, 0x79, 0xc0, 0x26, 0x84, 0xd2, 0x8a, 0x06, 0xc8, 0x7b, 0x55,
0x0f, 0x0a, 0xa3, 0x8b, 0x74, 0x5b, 0x5c, 0xa0, 0xb7, 0x0d, 0x23, 0x68, 0x12, 0x26, 0xa8, 0x10,
0xd8, 0x47, 0x3c, 0x50, 0x58, 0x54, 0x85, 0x99, 0x48, 0x26, 0x2c, 0xcb, 0x16, 0xbc, 0x07, 0x55,
0xe2, 0x38, 0x33, 0x62, 0x34, 0x51, 0xf3, 0xa0, 0xe1, 0xe1, 0x61, 0xdf, 0xc9, 0x93, 0x27, 0xa9,
0x85, 0x20, 0x0e, 0xb2, 0x71, 0xe3, 0x46, 0x28, 0x2a, 0x2a, 0x82, 0xa8, 0xa8, 0x28, 0x68, 0x69,
0x69, 0x61, 0xf6, 0xee, 0xfd, 0x23, 0x9b, 0x95, 0xfb, 0x8a, 0x49, 0xcf, 0x29, 0x21, 0x99, 0x39,
0xa5, 0x50, 0x50, 0x54, 0x4d, 0x5e, 0x64, 0x14, 0x43, 0x56, 0xf6, 0x2b, 0x68, 0x12, 0xca, 0x21,
0xe5, 0x59, 0x26, 0x6b, 0xb3, 0xd9, 0xca, 0x38, 0x10, 0x66, 0x49, 0x87, 0xfd, 0x94, 0x3f, 0x6f,
0x6f, 0x4c, 0x91, 0x6c, 0x62, 0x62, 0x82, 0x3a, 0x71, 0xe2, 0xc4, 0x22, 0xd0, 0xa6, 0x4d, 0x9b,
0x00, 0xd3, 0x39, 0x2b, 0x8c, 0x8a, 0x14, 0x16, 0x16, 0xc2, 0xd4, 0xd4, 0x54, 0x10, 0xdd, 0xc9,
0xea, 0x74, 0xba, 0x10, 0x1a, 0x25, 0x14, 0x77, 0x37, 0x3e, 0x52, 0xdf, 0xd0, 0x1c, 0x91, 0x29,
0xd4, 0xd0, 0xdd, 0x6b, 0x80, 0x94, 0x1f, 0xb2, 0xd9, 0x7e, 0x7d, 0x47, 0x53, 0xc8, 0xab, 0x11,
0x97, 0x96, 0x96, 0x1a, 0xb6, 0x6f, 0xdf, 0xbe, 0x62, 0x1e, 0x84, 0xf3, 0x4c, 0x33, 0x83, 0xd7,
0xf1, 0xe3, 0xc7, 0xe9, 0x85, 0xa0, 0x2d, 0x5b, 0xb6, 0x90, 0xcc, 0xcc, 0x4c, 0x22, 0x14, 0x0a,
0x09, 0x3a, 0x92, 0x6d, 0x6c, 0x6c, 0x24, 0x16, 0x8b, 0x85, 0xca, 0xcb, 0xcb, 0x03, 0xb3, 0xd9,
0x1c, 0x4e, 0x4a, 0x4a, 0x62, 0xef, 0xdc, 0xb9, 0xc3, 0xda, 0xed, 0x76, 0x0a, 0x1b, 0x3b, 0x52,
0x5c, 0x54, 0x0c, 0x4a, 0xfe, 0x25, 0x70, 0xe6, 0x7c, 0x0e, 0x7d, 0xcf, 0x7e, 0xc3, 0x1c, 0xfa,
0xf3, 0x9f, 0x32, 0x17, 0x4d, 0x06, 0x7c, 0xd9, 0x89, 0x79, 0x0d, 0x20, 0x28, 0xb2, 0x10, 0xb4,
0x76, 0xed, 0x5a, 0xc2, 0xa5, 0xaf, 0xaf, 0xaf, 0x2f, 0xbc, 0x64, 0xc9, 0x12, 0x2e, 0x32, 0x76,
0xd5, 0xaa, 0x55, 0xdc, 0xfc, 0x23, 0x18, 0x3d, 0xa6, 0x71, 0x2f, 0x5c, 0xbb, 0x76, 0x8d, 0x60,
0xc1, 0x29, 0x95, 0xbc, 0x81, 0xd1, 0x65, 0x6f, 0x04, 0x26, 0x60, 0x07, 0xd0, 0x46, 0xc3, 0xbb,
0x8c, 0x5f, 0x83, 0x2a, 0x61, 0xe9, 0xfd, 0x45, 0x20, 0xfc, 0xd6, 0x78, 0x11, 0x44, 0x61, 0x8d,
0x66, 0x16, 0x82, 0xd6, 0xad, 0x5b, 0x47, 0xb6, 0x6e, 0xdd, 0xca, 0x4c, 0xe3, 0xb5, 0x62, 0xc5,
0x0a, 0xce, 0xb2, 0x01, 0xac, 0x19, 0x41, 0x27, 0x72, 0xee, 0x64, 0xd7, 0xaf, 0x5f, 0x4f, 0xb0,
0xbe, 0x8c, 0x5a, 0xad, 0x26, 0x4a, 0xa5, 0x92, 0x54, 0xc4, 0x7e, 0xc1, 0x86, 0x1c, 0x02, 0x00,
0x4f, 0x0b, 0xd0, 0x92, 0x1d, 0x60, 0x4b, 0xe4, 0x45, 0xde, 0x26, 0xf1, 0x3e, 0x9b, 0x07, 0x25,
0x24, 0x24, 0xb4, 0x39, 0x9d, 0x4e, 0xc7, 0x81, 0x03, 0x07, 0xe6, 0x6b, 0xb4, 0x6c, 0xd9, 0x32,
0x72, 0xf0, 0xe0, 0x41, 0x16, 0xeb, 0x44, 0x70, 0x53, 0x1a, 0x37, 0x65, 0x38, 0x57, 0x6e, 0xd8,
0xb0, 0x81, 0x3d, 0x72, 0xe4, 0x08, 0x83, 0x6b, 0x04, 0xdd, 0x44, 0xf0, 0xcf, 0x31, 0xed, 0xed,
0xed, 0xac, 0x46, 0xa3, 0x21, 0x37, 0xaf, 0x9e, 0xb5, 0x99, 0x5f, 0xae, 0x65, 0xd9, 0x90, 0x07,
0xa0, 0x3f, 0x11, 0x66, 0x4a, 0x7e, 0x07, 0x9a, 0x04, 0x9e, 0x7c, 0xa1, 0x19, 0xb8, 0xc9, 0x20,
0x91, 0xc9, 0x64, 0x35, 0x38, 0x97, 0x7a, 0xb0, 0x8b, 0xcd, 0x37, 0x6e, 0xdc, 0x70, 0xe2, 0xe7,
0xc3, 0x57, 0x50, 0x50, 0x10, 0x72, 0xbb, 0xdd, 0xcc, 0xa5, 0x4b, 0x97, 0x08, 0xbe, 0x13, 0x96,
0x48, 0x24, 0x21, 0x4c, 0x5d, 0x18, 0xeb, 0x12, 0xe2, 0x0c, 0x81, 0xb3, 0x2c, 0x6c, 0xb5, 0x5a,
0x69, 0x9c, 0xf6, 0x04, 0xc7, 0xd5, 0x9b, 0xa6, 0x8c, 0x98, 0xf1, 0x77, 0xaa, 0xeb, 0x00, 0x14,
0x0e, 0x06, 0xf5, 0x77, 0x30, 0x9a, 0xb2, 0x1c, 0x94, 0x71, 0xbc, 0xef, 0x16, 0x81, 0x0c, 0x06,
0x83, 0x20, 0x3a, 0x3a, 0x5a, 0x3b, 0x27, 0x74, 0x4d, 0x33, 0x67, 0x53, 0xaf, 0xd7, 0x5b, 0x87,
0x73, 0x6f, 0x0c, 0x37, 0xe3, 0x36, 0x65, 0xb0, 0x56, 0xcc, 0xed, 0xdb, 0xb7, 0x59, 0x3c, 0x57,
0x10, 0x14, 0x67, 0x86, 0xa0, 0x4a, 0xa5, 0x62, 0x71, 0xbd, 0x23, 0x3e, 0x2e, 0xae, 0x57, 0x7c,
0x6f, 0xb9, 0x9d, 0xf6, 0x60, 0x20, 0xc3, 0x25, 0x10, 0x6e, 0xdc, 0x0a, 0xbd, 0x71, 0xbf, 0xf0,
0xb5, 0x5c, 0xe7, 0x2d, 0xe7, 0x6a, 0x24, 0xc5, 0x0d, 0x35, 0x1c, 0xec, 0xdf, 0x09, 0xa7, 0xb1,
0x1c, 0x53, 0xec, 0x1c, 0x1b, 0x1b, 0xa3, 0x10, 0x1e, 0x74, 0x38, 0x1c, 0x41, 0x7c, 0x8c, 0x8c,
0x8e, 0x8e, 0x12, 0x74, 0x1d, 0x2d, 0x95, 0x4a, 0xed, 0x68, 0x90, 0x5b, 0xe7, 0xbe, 0xe1, 0xed,
0xeb, 0x2f, 0xf9, 0x9a, 0xcb, 0x00, 0x80, 0xe1, 0xaf, 0x30, 0xf2, 0xe2, 0xb7, 0x50, 0x75, 0xf3,
0xd3, 0x47, 0x3c, 0xcc, 0x77, 0x34, 0x46, 0x25, 0xc2, 0x89, 0x2d, 0xe4, 0x84, 0x05, 0x5e, 0x24,
0x5c, 0x5b, 0x24, 0x6c, 0x07, 0x19, 0x46, 0x34, 0x9c, 0x9c, 0x9c, 0x3c, 0x9d, 0x9b, 0x9b, 0xeb,
0xc3, 0xaf, 0xb2, 0xfb, 0xe9, 0xd3, 0xa7, 0x1e, 0xfc, 0x22, 0x6b, 0xd7, 0xac, 0x59, 0xf3, 0x31,
0xd6, 0xf8, 0xe3, 0x97, 0x31, 0xbc, 0xd2, 0x31, 0x45, 0x2c, 0xa8, 0x0b, 0x4f, 0x42, 0xc9, 0xdf,
0x6f, 0x42, 0xec, 0xcd, 0xd8, 0xf3, 0xff, 0xf3, 0x39, 0x0d, 0xfb, 0xec, 0x8b, 0x53, 0xa7, 0x4e,
0x09, 0xe4, 0x72, 0xb9, 0x09, 0xeb, 0x65, 0xc5, 0x63, 0xd8, 0xe5, 0xb9, 0xb5, 0xaf, 0xa2, 0x78,
0x51, 0x3f, 0x5e, 0xff, 0xba, 0xbc, 0x49, 0x28, 0x9c, 0xf8, 0x21, 0x35, 0xad, 0x1b, 0x0d, 0xb7,
0xec, 0x67, 0x1f, 0x0c, 0xb7, 0x6d, 0xdb, 0xb6, 0x61, 0xe7, 0xce, 0x9d, 0x31, 0x87, 0x0e, 0x1d,
0x5a, 0x74, 0xe4, 0xc2, 0xeb, 0x23, 0xd4, 0xaf, 0x50, 0x4b, 0xb9, 0xe7, 0x7f, 0x00, 0x20, 0xc3,
0x6d, 0x47, 0xb5, 0x30, 0xbb, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82,
0xce, 0x00, 0x00, 0x07, 0x3f, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x96, 0x7d, 0x4c, 0x53,
0xfb, 0x19, 0xc7, 0x3b, 0xaf, 0xbb, 0x31, 0xbb, 0xcb, 0xee, 0x3f, 0xcb, 0x32, 0x93, 0xbb, 0x04,
0x17, 0xe3, 0x96, 0xa9, 0xf1, 0x2d, 0xce, 0xc5, 0xc4, 0x3b, 0xa3, 0x66, 0x4a, 0x16, 0xcd, 0x6e,
0x8c, 0xc6, 0x77, 0x0d, 0xa2, 0x46, 0xa3, 0x33, 0x66, 0xea, 0x54, 0x04, 0x99, 0x8a, 0x4a, 0x9c,
0x78, 0xf5, 0x5e, 0x94, 0x37, 0x11, 0xb8, 0x50, 0x0b, 0xe5, 0xbd, 0x50, 0x69, 0x69, 0xa1, 0x45,
0xda, 0x02, 0x05, 0x5a, 0x5a, 0xfa, 0x42, 0x29, 0xd0, 0x17, 0x0a, 0x6d, 0x01, 0x69, 0x4f, 0x5b,
0xfa, 0x76, 0xce, 0xef, 0xd9, 0x73, 0x88, 0x10, 0x98, 0xcb, 0xb2, 0xed, 0x26, 0x3b, 0xc9, 0x37,
0x39, 0xa7, 0xe7, 0xe4, 0xf7, 0xe9, 0xf3, 0x3c, 0xdf, 0xe7, 0xf9, 0xfd, 0x38, 0x00, 0xc0, 0xf9,
0x7f, 0xe8, 0xa3, 0x1f, 0xce, 0x9e, 0x3d, 0x9b, 0x79, 0xe3, 0xc6, 0x8d, 0x86, 0x23, 0x47, 0x8e,
0xa4, 0xef, 0xde, 0xbd, 0xfb, 0xb7, 0x9b, 0x36, 0x6d, 0xfa, 0xe1, 0xf6, 0xed, 0xdb, 0x97, 0x5e,
0xbc, 0x78, 0x91, 0x7b, 0xea, 0xd4, 0xa9, 0xaf, 0x77, 0xed, 0xda, 0xf5, 0xf9, 0xf7, 0x06, 0xe1,
0x82, 0x3f, 0x16, 0x08, 0x04, 0x26, 0xbc, 0xef, 0xa4, 0x28, 0xaa, 0xdf, 0x68, 0x34, 0x5a, 0x2a,
0x2a, 0x2a, 0xf4, 0xa9, 0xa9, 0xa9, 0x03, 0xcf, 0x9e, 0x3d, 0xf3, 0x49, 0x24, 0x12, 0x5b, 0x45,
0x8d, 0xc0, 0x56, 0xd5, 0xda, 0x65, 0x6a, 0xd5, 0xdb, 0x9b, 0xc5, 0x3a, 0x5b, 0xa1, 0x44, 0x6b,
0x3d, 0x87, 0xdf, 0x7c, 0xf2, 0x5f, 0x81, 0xf6, 0xee, 0xdd, 0xfb, 0x87, 0xc1, 0xc1, 0x41, 0x0b,
0xde, 0x17, 0x27, 0x27, 0x27, 0x6b, 0xce, 0x9c, 0x39, 0xa3, 0xad, 0xac, 0xac, 0x54, 0x8c, 0x8d,
0x8d, 0x05, 0x9d, 0x9e, 0xc9, 0x70, 0x87, 0x69, 0x84, 0x34, 0xe9, 0xdd, 0x84, 0xdb, 0xed, 0x66,
0xf2, 0xe4, 0x43, 0xf1, 0x7c, 0xd9, 0x20, 0x55, 0xdd, 0x3d, 0xea, 0x91, 0xf6, 0x0c, 0x78, 0x6b,
0x3b, 0x4c, 0x7f, 0xfb, 0x8f, 0x41, 0x98, 0xae, 0xac, 0x50, 0x28, 0xd4, 0xd7, 0xdb, 0xdb, 0x5b,
0x85, 0xd1, 0x0d, 0xa7, 0xa5, 0xa5, 0x29, 0xef, 0xdc, 0xb9, 0x63, 0x2f, 0x7c, 0x53, 0x49, 0xcb,
0x8c, 0xa3, 0x4c, 0x89, 0x7a, 0x2a, 0xce, 0xd7, 0xf9, 0x63, 0x75, 0x86, 0x60, 0x5c, 0x62, 0xa3,
0xe3, 0x4d, 0xd6, 0x10, 0x5d, 0xd4, 0xee, 0xa0, 0xb3, 0x1a, 0xfb, 0x83, 0xfc, 0x77, 0xa6, 0x70,
0x49, 0x6d, 0xab, 0x71, 0xe7, 0xce, 0x9d, 0xab, 0xfe, 0x25, 0xe8, 0xf4, 0xe9, 0xd3, 0x7f, 0xcd,
0xcb, 0xcb, 0xeb, 0x2e, 0x28, 0x28, 0x50, 0xbf, 0x7c, 0xf9, 0xd2, 0x8f, 0x11, 0x50, 0xcf, 0x9f,
0x3f, 0x0f, 0xa5, 0xa4, 0xa4, 0xc0, 0xed, 0xdb, 0xb7, 0xe1, 0xef, 0x59, 0x59, 0x44, 0xdc, 0x6d,
0x86, 0x17, 0xf2, 0x51, 0x92, 0x2d, 0x36, 0x43, 0x5e, 0xcb, 0x10, 0xc9, 0x11, 0x1b, 0x49, 0x91,
0xcc, 0x42, 0xde, 0x28, 0x46, 0xe8, 0x72, 0xd5, 0x30, 0x93, 0xd3, 0xa4, 0x27, 0x0d, 0x06, 0x5f,
0xac, 0x5e, 0x65, 0xa1, 0xeb, 0x9a, 0x95, 0xd4, 0xc1, 0x83, 0x07, 0xff, 0xfc, 0x11, 0xe8, 0xd1,
0xa3, 0x47, 0x12, 0xbc, 0x31, 0xfa, 0xfd, 0xfe, 0x7e, 0x93, 0xc9, 0x14, 0x19, 0x1d, 0x1d, 0x0d,
0x74, 0x77, 0x77, 0xc7, 0xb5, 0x5a, 0x2d, 0xb0, 0x6a, 0x56, 0xf6, 0x42, 0xb5, 0x9e, 0x22, 0xf5,
0xc6, 0x20, 0x11, 0x0d, 0x85, 0xa1, 0xc9, 0xe4, 0x83, 0x76, 0x7b, 0x98, 0xb4, 0x59, 0x29, 0xd2,
0xeb, 0x01, 0xba, 0x67, 0x2c, 0xca, 0x08, 0xb4, 0x2e, 0x46, 0x64, 0x7a, 0x1f, 0x6e, 0xb5, 0x86,
0x62, 0xd5, 0x62, 0x15, 0x39, 0x7c, 0xf8, 0x70, 0xd1, 0x47, 0xa0, 0x87, 0x0f, 0x1f, 0x4a, 0xf1,
0x46, 0x87, 0x00, 0x5b, 0x67, 0x67, 0x67, 0xbc, 0xab, 0xab, 0x2b, 0xc4, 0xe7, 0xf3, 0x49, 0x43,
0x43, 0x03, 0xb4, 0xb7, 0xb7, 0x43, 0x63, 0x5b, 0x0f, 0xf0, 0x8d, 0x11, 0x52, 0x20, 0xb3, 0x82,
0x6c, 0x38, 0x04, 0x62, 0xf3, 0x34, 0x88, 0x0d, 0x5e, 0x10, 0xe9, 0xc7, 0x49, 0x9f, 0x97, 0xd0,
0x6a, 0x47, 0x90, 0x48, 0xfa, 0xdd, 0x4c, 0xb5, 0xca, 0x12, 0xd6, 0x78, 0xc1, 0x57, 0xf7, 0x4e,
0x4f, 0xbe, 0xe3, 0x0b, 0xa6, 0x2f, 0x5f, 0xbe, 0x2c, 0x48, 0x4c, 0x4c, 0xfc, 0xcd, 0x3c, 0xe8,
0xc1, 0x83, 0x07, 0xb3, 0xa0, 0xfa, 0xfa, 0xfa, 0x20, 0x3a, 0x8b, 0xa0, 0x98, 0xfc, 0xfc, 0x7c,
0xa8, 0xa9, 0xa9, 0x01, 0x74, 0x20, 0x08, 0x64, 0x3d, 0x50, 0xa8, 0x74, 0x41, 0xa3, 0x89, 0x82,
0x12, 0x69, 0x3f, 0x28, 0x47, 0x28, 0x90, 0x1a, 0x3d, 0xa4, 0x59, 0x37, 0x0a, 0xd6, 0x69, 0xa0,
0x7b, 0x1d, 0x7e, 0xa2, 0x1e, 0x9a, 0x62, 0x44, 0x5d, 0x03, 0xb1, 0xc1, 0x69, 0xa0, 0x1a, 0x55,
0x26, 0x9a, 0xdf, 0x20, 0x77, 0xc7, 0xe3, 0xf1, 0xae, 0xb6, 0xb6, 0x36, 0xf3, 0xf9, 0xf3, 0xe7,
0x79, 0x58, 0xef, 0x2f, 0xe6, 0x41, 0x68, 0xd1, 0xd8, 0xfd, 0xfb, 0xf7, 0x81, 0x55, 0x46, 0x46,
0xc6, 0x2c, 0xa8, 0xa8, 0xa8, 0x08, 0xea, 0x24, 0x1d, 0x50, 0xd8, 0xee, 0x80, 0x26, 0x33, 0x05,
0xa5, 0xad, 0x06, 0x50, 0xd9, 0x82, 0xa4, 0xc5, 0x30, 0x4e, 0x14, 0x03, 0x1e, 0x62, 0xf3, 0x03,
0x6d, 0x1a, 0xa7, 0x88, 0x71, 0xd4, 0xc7, 0xa8, 0x8c, 0xf6, 0x98, 0x93, 0x62, 0xc2, 0xc2, 0xf6,
0xbe, 0x78, 0xc6, 0xe3, 0x97, 0x14, 0xeb, 0x5c, 0x54, 0x45, 0x24, 0x12, 0xd1, 0xdd, 0xbb, 0x77,
0xaf, 0x8b, 0x83, 0x0b, 0xcf, 0x82, 0xaa, 0xaa, 0xaa, 0xe8, 0x39, 0x10, 0x2b, 0x4c, 0x1f, 0x94,
0x95, 0x95, 0x01, 0x5f, 0x20, 0x81, 0x8a, 0x0e, 0x1b, 0xc8, 0x46, 0xc2, 0xc0, 0x95, 0xf5, 0x83,
0x62, 0xe8, 0x3d, 0xb4, 0xea, 0xec, 0xd0, 0x6d, 0x75, 0x93, 0xa1, 0x89, 0x19, 0x62, 0x9f, 0x9a,
0x21, 0x23, 0x5e, 0x8a, 0xe9, 0x1b, 0x72, 0xc5, 0x27, 0x66, 0x98, 0x68, 0xad, 0x48, 0xc1, 0xe4,
0x16, 0x94, 0x0d, 0x7f, 0x00, 0x15, 0x47, 0xa3, 0xd1, 0xee, 0x73, 0xe7, 0xce, 0xd5, 0xce, 0x82,
0x62, 0xb1, 0x98, 0xb9, 0xba, 0xba, 0x9a, 0xf9, 0x67, 0x10, 0x97, 0xcb, 0x05, 0x41, 0xc3, 0x5b,
0xe0, 0x09, 0x15, 0x20, 0xb5, 0x04, 0x80, 0xdb, 0xaa, 0x03, 0x8d, 0x93, 0x22, 0xed, 0xfd, 0x76,
0x30, 0x8f, 0xf9, 0x88, 0x7d, 0x32, 0x08, 0xae, 0xe9, 0x10, 0x19, 0x9d, 0x0a, 0xa0, 0xa8, 0xa8,
0xdb, 0x3f, 0x43, 0x67, 0xe7, 0x96, 0x31, 0x7e, 0x7f, 0x80, 0xfb, 0x01, 0xc4, 0x6f, 0x6e, 0x6e,
0x36, 0x61, 0xea, 0x7e, 0x3d, 0x0b, 0x0a, 0x04, 0x02, 0xce, 0xda, 0xda, 0x5a, 0xe6, 0xd2, 0xa5,
0x4b, 0x70, 0xf2, 0xe4, 0x49, 0xc0, 0x7e, 0x82, 0xbb, 0x77, 0xef, 0x42, 0x76, 0x76, 0x36, 0xb0,
0xa6, 0x78, 0xfa, 0x4d, 0x3e, 0x54, 0x36, 0xab, 0xa1, 0x42, 0x6e, 0x00, 0x99, 0xce, 0x06, 0x72,
0x8d, 0x05, 0xba, 0x8c, 0x23, 0xe0, 0x98, 0xa4, 0x60, 0x22, 0x10, 0x06, 0x8f, 0x2f, 0x00, 0x93,
0x81, 0x99, 0xb8, 0xa0, 0x49, 0x46, 0xbe, 0xcd, 0x2e, 0x72, 0xce, 0x45, 0x83, 0x3d, 0xa9, 0xc1,
0xb1, 0xc5, 0x9b, 0x35, 0x03, 0x0b, 0xc2, 0xce, 0x9f, 0xc4, 0x59, 0x16, 0xe5, 0x60, 0xff, 0xce,
0x69, 0xc5, 0x8a, 0x15, 0xb0, 0x6a, 0xd5, 0x2a, 0x40, 0xcb, 0x03, 0x36, 0x21, 0x54, 0x54, 0x09,
0xc9, 0x2b, 0x6e, 0x03, 0x28, 0xb1, 0x71, 0x7b, 0x2c, 0x2e, 0xd2, 0x3f, 0xe2, 0x02, 0x87, 0x77,
0x1a, 0xa6, 0x42, 0x61, 0x18, 0x19, 0xf3, 0x92, 0xef, 0x4a, 0x6b, 0xe0, 0x7e, 0x46, 0x16, 0x83,
0x57, 0xf1, 0x07, 0x50, 0x35, 0x9a, 0xc9, 0x88, 0xd1, 0x24, 0xcc, 0x83, 0x5c, 0x2e, 0x97, 0xff,
0xf8, 0xf1, 0xe3, 0xa1, 0x85, 0x20, 0x16, 0xb2, 0x61, 0xc3, 0x06, 0x28, 0x2d, 0x2d, 0x85, 0x84,
0x84, 0x04, 0x10, 0x89, 0x44, 0x74, 0x62, 0xe2, 0x1f, 0xe9, 0xbc, 0x02, 0x1e, 0x9d, 0x53, 0xc0,
0x23, 0xb9, 0x05, 0xe5, 0x50, 0x54, 0x5a, 0x0b, 0x2f, 0x72, 0xcb, 0x20, 0x2f, 0xff, 0x0d, 0x08,
0x45, 0x72, 0x78, 0xfa, 0x75, 0x0e, 0x33, 0x3c, 0x3c, 0x5c, 0xc1, 0x82, 0x30, 0x4b, 0xba, 0x85,
0xfd, 0xc4, 0xc1, 0x14, 0xc9, 0xa6, 0xa6, 0xa6, 0x42, 0xc7, 0x8e, 0x1d, 0x5b, 0x04, 0xda, 0xb8,
0x71, 0x23, 0x60, 0x3a, 0x67, 0x85, 0x51, 0x91, 0x92, 0x92, 0x12, 0xf0, 0xf9, 0x7c, 0x61, 0x74,
0x27, 0xd3, 0xd7, 0xd7, 0x17, 0xe1, 0x72, 0xdf, 0x44, 0x52, 0x53, 0xd3, 0x62, 0x8d, 0x42, 0x51,
0x4c, 0xae, 0x54, 0x93, 0x1e, 0xbd, 0x11, 0x41, 0x79, 0xcc, 0x60, 0x7f, 0xd7, 0xdb, 0x88, 0x47,
0x2b, 0x29, 0x2f, 0x2f, 0x37, 0x6c, 0xdb, 0xb6, 0x6d, 0xf9, 0x3c, 0x08, 0xe7, 0x99, 0x66, 0x06,
0xaf, 0xa3, 0x47, 0x8f, 0xc6, 0x17, 0x82, 0x36, 0x6f, 0xde, 0x4c, 0x72, 0x73, 0x73, 0x89, 0x58,
0x2c, 0x26, 0xe8, 0x48, 0x46, 0x28, 0x14, 0x12, 0x8b, 0xc5, 0x12, 0x7a, 0xfd, 0xfa, 0x35, 0x98,
0xcd, 0xe6, 0x68, 0x66, 0x66, 0x26, 0x73, 0xeb, 0xd6, 0x2d, 0xc6, 0x6e, 0xb7, 0x87, 0x14, 0x0a,
0x45, 0xac, 0xb4, 0xb4, 0x8c, 0x28, 0xb9, 0x17, 0xc0, 0x59, 0xf0, 0x0b, 0x18, 0xc8, 0xfa, 0x19,
0x7d, 0x60, 0xff, 0x9f, 0x72, 0x17, 0x4d, 0x06, 0xfc, 0xd8, 0x89, 0x79, 0x0d, 0x20, 0x28, 0xb6,
0x10, 0xb4, 0x66, 0xcd, 0x1a, 0xc2, 0xa6, 0x6f, 0x60, 0x60, 0x20, 0xba, 0x64, 0xc9, 0x12, 0x36,
0x32, 0x66, 0xe5, 0xca, 0x95, 0xec, 0xfc, 0x23, 0x18, 0x3d, 0xbd, 0x67, 0xcf, 0x1e, 0xb8, 0x72,
0xe5, 0x0a, 0xc1, 0x82, 0x87, 0x3a, 0xdb, 0x84, 0xb4, 0x2e, 0x7f, 0x03, 0xd0, 0x01, 0x1b, 0x80,
0x36, 0x09, 0xde, 0xe7, 0xfc, 0x14, 0x94, 0xe9, 0x4b, 0xef, 0x2e, 0x02, 0xe1, 0x5e, 0x33, 0x81,
0xa0, 0x10, 0xd6, 0x68, 0x66, 0x21, 0x68, 0xed, 0xda, 0xb5, 0x64, 0xcb, 0x96, 0x2d, 0x74, 0x10,
0xaf, 0xe5, 0xcb, 0x97, 0x13, 0xcc, 0x79, 0x00, 0x6b, 0x46, 0xd0, 0x89, 0xac, 0x3b, 0x99, 0x75,
0xeb, 0xd6, 0x11, 0xac, 0x2f, 0xad, 0x56, 0xab, 0x89, 0x52, 0xa9, 0x24, 0x95, 0x29, 0x2b, 0x98,
0x88, 0x83, 0x0f, 0xe0, 0x15, 0x41, 0x5c, 0xba, 0x1d, 0x86, 0x33, 0x38, 0xb1, 0xbe, 0x4c, 0xce,
0x17, 0xf3, 0xa0, 0xf4, 0xf4, 0xf4, 0x76, 0xa7, 0xd3, 0xe9, 0xd8, 0xb7, 0x6f, 0xdf, 0x7c, 0x8d,
0x96, 0x2d, 0x5b, 0x46, 0xf6, 0xef, 0xdf, 0xcf, 0x60, 0x9d, 0x08, 0x2e, 0x1a, 0xc7, 0x45, 0x69,
0xd6, 0x95, 0xeb, 0xd7, 0xaf, 0x67, 0x0e, 0x1d, 0x3a, 0x44, 0xe3, 0x3b, 0x82, 0x6e, 0x22, 0xf8,
0xe7, 0x68, 0x95, 0x4a, 0xc5, 0x68, 0x34, 0x1a, 0x72, 0xf5, 0xd2, 0xe9, 0x61, 0x73, 0xe1, 0x6a,
0x86, 0x89, 0x78, 0x01, 0x06, 0x33, 0x60, 0x86, 0xf7, 0x2b, 0xd0, 0xa4, 0x73, 0xe4, 0x0b, 0xcd,
0xc0, 0x4e, 0x06, 0xa9, 0x4c, 0x26, 0xab, 0xc3, 0xb9, 0xd4, 0x8b, 0x5d, 0x6c, 0xbe, 0x76, 0xed,
0x9a, 0x13, 0xb7, 0x0f, 0x7f, 0x71, 0x71, 0x71, 0xc4, 0xe3, 0xf1, 0xd0, 0x17, 0x2e, 0x5c, 0x20,
0xf8, 0x4d, 0x54, 0x2a, 0x95, 0x46, 0x30, 0x75, 0x51, 0x9b, 0xcd, 0x16, 0xd1, 0xe9, 0x74, 0x11,
0x9c, 0x65, 0x51, 0xab, 0xd5, 0x1a, 0xc7, 0x69, 0x4f, 0xf0, 0xdb, 0x77, 0x4d, 0x39, 0xc9, 0x93,
0xef, 0x3b, 0xae, 0x02, 0x84, 0x86, 0x00, 0xd4, 0x5f, 0xc1, 0x78, 0xd6, 0x67, 0xa0, 0x4c, 0xe3,
0x7c, 0xb5, 0x08, 0x64, 0x30, 0x18, 0xf8, 0x49, 0x49, 0x49, 0xda, 0x39, 0xa1, 0x6b, 0x9a, 0x58,
0x9b, 0x4e, 0x4c, 0x4c, 0x08, 0x70, 0xee, 0xb9, 0x71, 0x31, 0x76, 0x51, 0x1a, 0x6b, 0x45, 0xdf,
0xbc, 0x79, 0x93, 0xc1, 0x73, 0x05, 0x41, 0x31, 0x08, 0x0d, 0x77, 0x74, 0x74, 0x30, 0xf8, 0xbe,
0x13, 0x37, 0x49, 0xbd, 0x24, 0xf5, 0x47, 0xb6, 0xb8, 0x17, 0x03, 0x71, 0xf1, 0x20, 0x2a, 0xdc,
0x02, 0xfa, 0xb4, 0x1f, 0xf8, 0x45, 0x57, 0x39, 0x9f, 0xb1, 0x35, 0x6a, 0xc1, 0x05, 0x35, 0x2c,
0xec, 0xdf, 0x09, 0xa7, 0xb1, 0x1c, 0x53, 0xec, 0x74, 0xbb, 0xdd, 0x21, 0x84, 0x87, 0x1d, 0x0e,
0x47, 0x18, 0x1f, 0x63, 0xe3, 0xe3, 0xe3, 0x04, 0xb7, 0x93, 0x78, 0x4b, 0x4b, 0x8b, 0x0d, 0x0d,
0x72, 0xe3, 0xcc, 0xef, 0x39, 0x89, 0x83, 0xbc, 0x2f, 0xd9, 0x0c, 0x00, 0x18, 0xfe, 0x02, 0x63,
0x2f, 0x7e, 0x0e, 0x35, 0xd7, 0x3f, 0x7f, 0xc0, 0xc1, 0x7c, 0x27, 0x61, 0x54, 0xcd, 0x38, 0xb1,
0xc5, 0xac, 0xb0, 0xc0, 0x8b, 0x84, 0xef, 0x16, 0x09, 0xdb, 0x41, 0x86, 0x11, 0xb9, 0x9e, 0x3c,
0x79, 0x12, 0x7c, 0xf5, 0xea, 0x95, 0x1f, 0x77, 0x65, 0xcf, 0xe3, 0xc7, 0x8f, 0xbd, 0xb8, 0x23,
0x6b, 0x57, 0xaf, 0x5e, 0xfd, 0x29, 0xd6, 0xf8, 0xd3, 0xc2, 0x64, 0x4e, 0xb9, 0x5b, 0x91, 0x02,
0xea, 0x92, 0xe3, 0xc0, 0xfb, 0xe6, 0x3a, 0xa4, 0x5c, 0x4f, 0x39, 0xfb, 0x3f, 0x9f, 0xd3, 0xb0,
0xcf, 0x7e, 0x79, 0xe2, 0xc4, 0x09, 0xbe, 0x5c, 0x2e, 0x37, 0x61, 0xbd, 0xac, 0x78, 0x0c, 0xbb,
0x38, 0xf7, 0xee, 0x77, 0x09, 0x9c, 0x84, 0x6f, 0xaf, 0x7e, 0x59, 0xf9, 0x56, 0x2c, 0x9e, 0x7a,
0xfa, 0x3c, 0xbb, 0x07, 0x0d, 0xb7, 0xec, 0x7b, 0x1f, 0x0c, 0xb7, 0x6e, 0xdd, 0xba, 0x7e, 0xc7,
0x8e, 0x1d, 0xc9, 0x07, 0x0e, 0x1c, 0x58, 0x74, 0xe4, 0xc2, 0xeb, 0x13, 0xd4, 0x4f, 0x50, 0x4b,
0xd9, 0xe7, 0x7f, 0x00, 0xb6, 0xba, 0x6d, 0x7f, 0x53, 0x45, 0x95, 0x9a, 0x00, 0x00, 0x00, 0x00,
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE icon_gerbview_small_xpm[1] = {{ png, sizeof( png ), "icon_gerbview_small_xpm" }};

View File

@ -0,0 +1,74 @@
/* 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, 0x96, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x9d, 0x56, 0xdf, 0x6b, 0x1c,
0x55, 0x14, 0xfe, 0xce, 0x99, 0x99, 0xed, 0x6e, 0x36, 0xd3, 0x75, 0xd7, 0x92, 0x44, 0x30, 0xa5,
0xd5, 0x56, 0x93, 0x56, 0xa1, 0x6d, 0x04, 0x45, 0x14, 0x8b, 0x10, 0x1a, 0x29, 0x52, 0x91, 0xa2,
0xf5, 0x4d, 0xf0, 0x55, 0xec, 0x8f, 0x07, 0x97, 0x40, 0xeb, 0x8f, 0x8a, 0xa4, 0x55, 0x5f, 0x7c,
0x12, 0x14, 0x91, 0x42, 0x44, 0x7d, 0x51, 0xf0, 0x49, 0xa1, 0xfe, 0x07, 0x62, 0x25, 0x8a, 0x68,
0x43, 0x5b, 0xb6, 0x94, 0x40, 0xd2, 0x26, 0x99, 0x6d, 0x76, 0x76, 0x67, 0x33, 0xb3, 0xf7, 0xf8,
0xb0, 0x33, 0xb3, 0x77, 0x67, 0x67, 0xd7, 0xd4, 0x0b, 0x97, 0x33, 0x73, 0xb9, 0xdc, 0xef, 0x7e,
0xdf, 0xf9, 0xce, 0xbd, 0x97, 0x00, 0xcc, 0x00, 0x98, 0x04, 0xc0, 0x00, 0x14, 0xee, 0xad, 0x51,
0xd8, 0x97, 0x00, 0x5c, 0x16, 0x91, 0xdb, 0x83, 0x26, 0x9f, 0x9a, 0x9f, 0x9f, 0xbf, 0xe6, 0x54,
0xab, 0xea, 0xee, 0xc6, 0x46, 0xab, 0x56, 0xab, 0xa9, 0x9a, 0xeb, 0xaa, 0x7a, 0xbd, 0xae, 0x3c,
0xcf, 0x53, 0x9e, 0xe7, 0xa9, 0x66, 0xb3, 0x19, 0xf7, 0xcd, 0xcd, 0x4d, 0xe5, 0xfb, 0xbe, 0xf2,
0x7d, 0x5f, 0x05, 0x41, 0xa0, 0x1a, 0x8d, 0x86, 0xba, 0xb5, 0xb4, 0xe4, 0x1f, 0x7f, 0xe5, 0xc4,
0x1c, 0x80, 0xed, 0x22, 0x82, 0xb4, 0x6e, 0x02, 0xe0, 0x62, 0xa9, 0x94, 0x63, 0x8a, 0x1b, 0x88,
0x19, 0x4c, 0x04, 0x66, 0x06, 0x11, 0xb5, 0xb7, 0xae, 0xc5, 0xe8, 0x3b, 0xfa, 0x37, 0x88, 0xcc,
0xd9, 0xd9, 0x72, 0xf9, 0x7a, 0xa5, 0x72, 0x83, 0x88, 0x2e, 0x89, 0x48, 0x33, 0xc9, 0x86, 0x01,
0x28, 0x22, 0x92, 0x2d, 0xe9, 0xa4, 0x01, 0xe8, 0x4d, 0x29, 0x05, 0x06, 0xd1, 0x85, 0xb9, 0x0f,
0x3f, 0xdb, 0x3d, 0xb1, 0x7f, 0x9a, 0x88, 0x8c, 0x34, 0xa0, 0x2d, 0x37, 0x91, 0xf4, 0xfd, 0x30,
0x33, 0x36, 0x6a, 0x1b, 0x78, 0x72, 0xea, 0x10, 0xbf, 0xfb, 0xce, 0xb9, 0xef, 0xef, 0x1f, 0x7d,
0x70, 0x2a, 0x1d, 0x48, 0x04, 0x72, 0x8f, 0x8b, 0x47, 0x0c, 0x99, 0x19, 0x99, 0x4c, 0x06, 0x96,
0x69, 0xa1, 0xd1, 0xf0, 0xf0, 0xe2, 0x91, 0x69, 0xeb, 0xf4, 0xec, 0xdb, 0x97, 0xb3, 0x85, 0xc2,
0x5e, 0x7d, 0xae, 0x99, 0x58, 0x15, 0x20, 0x8a, 0xa3, 0x88, 0xf4, 0x95, 0x4b, 0x07, 0x33, 0x4d,
0x13, 0x85, 0xc2, 0x76, 0xdc, 0x59, 0x5d, 0xc5, 0xe4, 0xc4, 0x04, 0x5e, 0x3f, 0xfe, 0xb2, 0xed,
0xf9, 0xf4, 0x13, 0x11, 0x3d, 0x2d, 0x22, 0xcb, 0xbd, 0x40, 0x00, 0x24, 0xf4, 0x6b, 0x14, 0xfb,
0xb1, 0x8c, 0x36, 0xc0, 0xcc, 0xb0, 0x2c, 0x0b, 0xa5, 0x52, 0x09, 0x57, 0xaf, 0x2e, 0x62, 0x61,
0xe1, 0x0f, 0x8c, 0x8e, 0x8e, 0xe0, 0xb5, 0xa3, 0xcf, 0x3f, 0x94, 0xcd, 0x7d, 0xf1, 0x2d, 0x11,
0x1d, 0x13, 0x91, 0xbb, 0xac, 0xb3, 0x91, 0x88, 0x95, 0x1e, 0x07, 0x48, 0x28, 0x22, 0x31, 0xd0,
0xd0, 0xd0, 0x10, 0xc6, 0x77, 0x8e, 0xa3, 0xd9, 0xf4, 0xf0, 0xdb, 0x95, 0xdf, 0xb1, 0xbe, 0xe6,
0xe0, 0xf0, 0x13, 0x8f, 0x1f, 0xfe, 0xf4, 0xf3, 0x4b, 0x1f, 0x13, 0x51, 0xde, 0x4c, 0xdd, 0xf1,
0x00, 0x56, 0x69, 0x72, 0x32, 0x33, 0xb2, 0xd9, 0x2c, 0x4a, 0xc5, 0x22, 0x2c, 0xd3, 0x84, 0x6d,
0xdb, 0x68, 0x34, 0x3c, 0x10, 0x11, 0xa6, 0x1e, 0x7b, 0xf4, 0x55, 0x00, 0x73, 0x66, 0xd7, 0xe2,
0x22, 0x10, 0xa2, 0xae, 0xd8, 0x2f, 0x57, 0xd1, 0x58, 0xc4, 0x0a, 0x00, 0x72, 0xb9, 0x1c, 0x0c,
0xc3, 0x40, 0x3e, 0x9f, 0x47, 0x10, 0x04, 0x50, 0x4a, 0xa1, 0x5e, 0x6f, 0x58, 0x00, 0xb2, 0x66,
0x0f, 0x93, 0x04, 0x98, 0x0e, 0xa2, 0x2f, 0x9e, 0x8c, 0x51, 0x71, 0x47, 0x2e, 0x6c, 0xb5, 0x5a,
0xba, 0xe4, 0x62, 0xf6, 0xec, 0x30, 0x09, 0x36, 0xa0, 0x50, 0xd3, 0x18, 0x1a, 0x86, 0x01, 0x66,
0x86, 0x61, 0xb4, 0x6b, 0xd6, 0xb2, 0xac, 0x4e, 0x1d, 0x89, 0x9e, 0x70, 0xcd, 0x14, 0xfa, 0x78,
0x64, 0x86, 0x7e, 0x51, 0x9f, 0x17, 0x31, 0xd3, 0x8f, 0x30, 0x4e, 0xba, 0x4a, 0x12, 0x0e, 0x94,
0x04, 0x60, 0xbf, 0x98, 0x06, 0xa8, 0x8f, 0xb3, 0x6e, 0xe5, 0x1e, 0x46, 0x89, 0xef, 0xff, 0x3a,
0x39, 0x64, 0xc0, 0xbc, 0xee, 0x1c, 0x01, 0x90, 0xf0, 0x64, 0x90, 0x76, 0xd9, 0xc7, 0x79, 0x4a,
0x9e, 0x06, 0xd1, 0x82, 0xc9, 0xef, 0x7e, 0x35, 0x67, 0x76, 0xc9, 0x15, 0x82, 0xe8, 0x80, 0x3f,
0x5c, 0xfc, 0x04, 0x37, 0x17, 0xfe, 0xfc, 0x5f, 0xa7, 0x3a, 0x00, 0xec, 0x3a, 0x74, 0x20, 0xd3,
0x61, 0xa4, 0x49, 0xa4, 0x83, 0x10, 0x80, 0xea, 0xf2, 0x6d, 0xec, 0xd8, 0x39, 0x8e, 0xc9, 0x67,
0x9f, 0x01, 0x31, 0xb7, 0xaf, 0xd4, 0xc4, 0x1d, 0x35, 0xa8, 0x59, 0xf6, 0x70, 0x10, 0x03, 0xa9,
0x14, 0xe9, 0x74, 0x37, 0x8e, 0xed, 0xdd, 0x83, 0x83, 0x47, 0x67, 0xe2, 0x4b, 0x8f, 0x88, 0xb6,
0x0c, 0xe8, 0x38, 0x8e, 0xea, 0x30, 0x52, 0x61, 0x22, 0x35, 0x90, 0xe8, 0x08, 0x8a, 0xbb, 0x08,
0xbe, 0x39, 0x5f, 0xc6, 0xf5, 0x2b, 0xbf, 0xf6, 0xbe, 0x05, 0xbe, 0xfc, 0x0e, 0xf7, 0x8d, 0x8c,
0x81, 0x88, 0xf0, 0xd5, 0xc9, 0x37, 0xb0, 0x76, 0xeb, 0x26, 0x00, 0xe0, 0x58, 0xf9, 0x7d, 0xec,
0x78, 0x64, 0x9f, 0x9e, 0x23, 0xd5, 0x6b, 0xd1, 0xd0, 0x0c, 0x88, 0x9c, 0x28, 0x82, 0x6d, 0x43,
0x79, 0xe4, 0x6c, 0xbb, 0x27, 0x3f, 0xba, 0x09, 0x46, 0x76, 0xef, 0x41, 0x36, 0xdf, 0x9e, 0x93,
0x1d, 0x1e, 0xee, 0x36, 0xc3, 0xda, 0xea, 0x7a, 0x53, 0x07, 0x4a, 0x93, 0x50, 0x44, 0xf0, 0xd2,
0x99, 0xb3, 0x5d, 0xb2, 0xe9, 0xd2, 0xa9, 0x50, 0xfa, 0x17, 0xde, 0x2a, 0x77, 0xc9, 0x59, 0xa9,
0x54, 0xbc, 0x08, 0x88, 0x16, 0x17, 0xff, 0x71, 0x67, 0xe4, 0x48, 0xa7, 0x00, 0x35, 0x10, 0x68,
0x75, 0xf4, 0xf3, 0x8f, 0x1f, 0x60, 0x75, 0xe5, 0x5a, 0x6a, 0x5e, 0x76, 0x3d, 0xfc, 0x14, 0x9e,
0x9b, 0x7e, 0x13, 0xbf, 0x7c, 0xf4, 0x1e, 0x56, 0xfe, 0xfe, 0x2b, 0x1e, 0x0f, 0x0a, 0x45, 0x8e,
0x80, 0x0c, 0xc7, 0x71, 0x94, 0xeb, 0xba, 0x01, 0x11, 0x83, 0xb9, 0xf3, 0xfa, 0x21, 0x22, 0x14,
0x1e, 0x18, 0xe3, 0x6d, 0xb6, 0x0d, 0xd7, 0x75, 0x55, 0xd5, 0x59, 0xe6, 0xf5, 0xf5, 0x25, 0xd2,
0x5f, 0x75, 0x21, 0x27, 0x14, 0xab, 0x2b, 0x52, 0xab, 0xd5, 0x54, 0x4b, 0x84, 0x61, 0x18, 0xf1,
0x9c, 0xa6, 0x1f, 0x04, 0x61, 0x12, 0x70, 0x02, 0xc0, 0x41, 0x00, 0x46, 0xca, 0x03, 0xb2, 0xef,
0x53, 0x62, 0x8b, 0x63, 0x19, 0x00, 0x77, 0x00, 0x7c, 0xfd, 0x2f, 0xaa, 0x54, 0x34, 0x60, 0xb0,
0x2e, 0xe7, 0xea, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE pagelayout_load_xpm[1] = {{ png, sizeof( png ), "pagelayout_load_xpm" }};
//EOF

View File

@ -0,0 +1,100 @@
/* 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, 0x05, 0x29, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x95, 0x95, 0x6b, 0x6c, 0x53,
0x65, 0x18, 0xc7, 0x97, 0x60, 0x42, 0x22, 0x09, 0x5f, 0x8c, 0xf2, 0xc5, 0x20, 0x7e, 0x30, 0x92,
0x18, 0x82, 0xd1, 0xc8, 0x18, 0x06, 0x37, 0x25, 0x8c, 0x99, 0x2c, 0x30, 0x22, 0x43, 0x40, 0x81,
0xc4, 0x08, 0x04, 0x50, 0x23, 0x53, 0x26, 0x0c, 0xd8, 0x64, 0x1d, 0xdb, 0xb8, 0x18, 0xd8, 0xd8,
0x50, 0xdc, 0x8d, 0x4b, 0x51, 0xe2, 0x94, 0x4b, 0x69, 0x3b, 0x04, 0xc5, 0xb0, 0x8d, 0x51, 0x75,
0x63, 0x12, 0xd8, 0x00, 0xa1, 0xeb, 0x2e, 0xbd, 0xad, 0xf7, 0x7b, 0xd7, 0x9d, 0xf6, 0xfc, 0x7d,
0xde, 0xd7, 0x9d, 0xae, 0xa7, 0xeb, 0x88, 0x9e, 0xe4, 0x97, 0x73, 0xd2, 0xad, 0xcf, 0xef, 0x3c,
0xff, 0xf7, 0x79, 0xdf, 0xa6, 0xa5, 0xa5, 0xa5, 0xe5, 0x10, 0xdb, 0x88, 0xcf, 0xc6, 0xee, 0xff,
0x87, 0x82, 0xb1, 0xef, 0xad, 0x26, 0x9e, 0x06, 0x90, 0x36, 0x19, 0xec, 0xfa, 0x54, 0xa9, 0x54,
0xea, 0x3d, 0x5e, 0xaf, 0xe8, 0xf3, 0xfb, 0x63, 0x81, 0x40, 0x40, 0x0c, 0x04, 0x83, 0x62, 0x28,
0x14, 0x12, 0x47, 0x46, 0x46, 0x38, 0x91, 0x48, 0x84, 0xee, 0x03, 0xfc, 0x3e, 0x3a, 0x3a, 0x2a,
0x0a, 0x82, 0xc0, 0x89, 0x46, 0xa3, 0x62, 0x38, 0x1c, 0x16, 0x8d, 0x66, 0xb3, 0xb0, 0x62, 0xe5,
0xaa, 0x0a, 0xaa, 0x35, 0xfd, 0x71, 0xa2, 0x02, 0x8d, 0x56, 0x6b, 0xf6, 0xf9, 0x7c, 0xf0, 0x07,
0x02, 0x08, 0x06, 0x83, 0x08, 0x85, 0xc3, 0x20, 0x01, 0xa8, 0x28, 0xa8, 0x20, 0x3d, 0xff, 0x09,
0x97, 0x2b, 0x1d, 0x54, 0x18, 0xb1, 0x58, 0x0c, 0xa2, 0x28, 0xc6, 0x61, 0xff, 0x67, 0xb1, 0x58,
0xd0, 0xd5, 0xdd, 0x2d, 0xbe, 0x92, 0x9e, 0xb1, 0x91, 0xea, 0x4d, 0x9d, 0xb4, 0x23, 0x6d, 0x4b,
0x8b, 0xe9, 0x71, 0x22, 0x8f, 0x67, 0x09, 0xec, 0xf6, 0x34, 0xfa, 0x4c, 0x9d, 0x52, 0x64, 0x32,
0x99, 0xd0, 0xdd, 0xfd, 0x17, 0xae, 0x5c, 0xbb, 0x16, 0x7b, 0x7e, 0xf6, 0x4b, 0xb9, 0x54, 0x73,
0xca, 0x7f, 0x12, 0x05, 0x43, 0x2e, 0x6c, 0x58, 0x37, 0x17, 0xfd, 0xf7, 0xca, 0xe1, 0xf7, 0x2b,
0xb8, 0x84, 0xe1, 0x72, 0xcd, 0xa1, 0xc2, 0xe7, 0x49, 0x7e, 0x97, 0x84, 0x21, 0x59, 0x47, 0xad,
0x6d, 0x6d, 0xf0, 0x7a, 0x3d, 0x38, 0xf1, 0xdd, 0xd9, 0xd1, 0xa7, 0x66, 0x3c, 0x3b, 0x2f, 0xb5,
0x48, 0xab, 0x35, 0x79, 0x13, 0x44, 0xfe, 0x80, 0x16, 0x16, 0xf3, 0x13, 0x71, 0x41, 0x2a, 0xdc,
0xee, 0xf9, 0x24, 0xf2, 0xf1, 0xae, 0x9d, 0x4e, 0x27, 0x6e, 0xde, 0xd4, 0xc1, 0x6a, 0xb5, 0xf2,
0xe7, 0xb2, 0x23, 0xd5, 0xbe, 0xa9, 0xd3, 0xa7, 0xbf, 0x30, 0xb9, 0xc8, 0xef, 0xff, 0x37, 0xba,
0x50, 0x08, 0xd6, 0x8e, 0x8d, 0xb0, 0xdb, 0xa6, 0xa5, 0x94, 0x78, 0x3c, 0xd9, 0xd4, 0x91, 0x0f,
0xec, 0x62, 0xd1, 0x7a, 0xbd, 0x5e, 0xf4, 0xf6, 0xf6, 0xe2, 0x6e, 0x4f, 0x0f, 0x8f, 0xd6, 0x68,
0x34, 0x62, 0xf7, 0xc1, 0xa3, 0x7a, 0xaa, 0x3d, 0x63, 0x52, 0x51, 0x60, 0x4c, 0x64, 0xff, 0xbd,
0x09, 0xb6, 0x3f, 0xde, 0x9e, 0x20, 0x71, 0x3a, 0x9f, 0xa3, 0x62, 0x23, 0x3c, 0x36, 0x76, 0xb1,
0xc2, 0xfc, 0xc5, 0xa8, 0x9b, 0xd6, 0xd6, 0x36, 0xbe, 0x56, 0x66, 0xb3, 0x19, 0x3d, 0xbd, 0x3d,
0x28, 0xab, 0xa9, 0xfb, 0x4d, 0x9a, 0xc4, 0x71, 0x11, 0xbd, 0x95, 0x8f, 0x89, 0x28, 0x3e, 0xf6,
0x45, 0x9f, 0xf9, 0x01, 0x06, 0xd5, 0x33, 0x27, 0x88, 0x1c, 0x8e, 0x27, 0xa9, 0xb8, 0x10, 0x1f,
0x06, 0xa9, 0x2b, 0xb6, 0xc6, 0x86, 0xfe, 0x7e, 0xe8, 0x74, 0x3a, 0xa8, 0x35, 0x5a, 0xb4, 0xb7,
0xdf, 0x40, 0x3b, 0x3d, 0x57, 0x7d, 0x7b, 0xf2, 0x38, 0x39, 0xa6, 0xa5, 0x14, 0x05, 0x49, 0x44,
0xfb, 0x03, 0xf6, 0xfe, 0xd7, 0x61, 0x33, 0x4e, 0x81, 0xa3, 0x7d, 0x16, 0x42, 0xd7, 0xe7, 0xc2,
0xa9, 0x7f, 0x86, 0xcb, 0x46, 0x47, 0xff, 0x96, 0x89, 0x58, 0x57, 0x6c, 0xad, 0x58, 0x0d, 0x16,
0x5b, 0x0f, 0x45, 0xd8, 0xd9, 0xd9, 0x85, 0xae, 0xae, 0x5b, 0x68, 0xef, 0xd0, 0x79, 0xc8, 0x31,
0x2b, 0x2e, 0xf2, 0x30, 0x51, 0xd2, 0x88, 0xfb, 0xfd, 0xa7, 0x60, 0x3a, 0x57, 0x08, 0xc3, 0xc1,
0x2c, 0xb8, 0x1a, 0x32, 0x10, 0xbd, 0x94, 0x03, 0xcf, 0xd5, 0x37, 0x61, 0xd1, 0x7c, 0x20, 0x1b,
0xf3, 0x44, 0x19, 0x7b, 0x51, 0xb7, 0xdb, 0x4d, 0x2f, 0x64, 0xc7, 0xf0, 0xf0, 0x30, 0x0c, 0x86,
0xfe, 0x20, 0x39, 0x66, 0xcb, 0x44, 0xc9, 0xeb, 0x14, 0xa6, 0xd1, 0xa5, 0xd3, 0x00, 0x8f, 0x0e,
0xe7, 0x61, 0xa8, 0x6a, 0x11, 0xbc, 0x8d, 0xf3, 0x10, 0x6d, 0xc9, 0xc3, 0x70, 0x43, 0x2e, 0xdc,
0xba, 0xef, 0x27, 0xc8, 0xd8, 0x9d, 0x6d, 0x6a, 0x26, 0x64, 0x89, 0x30, 0x68, 0xed, 0x98, 0xe8,
0xc5, 0xb8, 0xc8, 0xed, 0xf1, 0x70, 0x51, 0x72, 0x7c, 0x6c, 0x9f, 0x44, 0x42, 0x01, 0xdc, 0x2f,
0x49, 0x87, 0xf9, 0x58, 0x36, 0xfc, 0x27, 0x5e, 0x43, 0xf4, 0xca, 0x1a, 0x0c, 0x1d, 0xc9, 0x44,
0xd0, 0x70, 0x4b, 0xb6, 0x79, 0xa5, 0x8b, 0x3d, 0xb3, 0x97, 0x60, 0xd0, 0xb8, 0x8f, 0x8b, 0x34,
0x63, 0xa2, 0x54, 0xf1, 0x8d, 0x8c, 0x75, 0x15, 0x72, 0x9a, 0xd0, 0xbb, 0x73, 0x0e, 0x86, 0xeb,
0x72, 0x10, 0x52, 0xa6, 0x43, 0xb8, 0xba, 0x1e, 0x7d, 0x95, 0xf3, 0x11, 0xf1, 0x58, 0x65, 0xb2,
0x44, 0x21, 0xbb, 0x5c, 0x2e, 0x97, 0x5c, 0xe4, 0xa2, 0x5c, 0x53, 0xc6, 0xc7, 0x64, 0x24, 0x62,
0x71, 0xf8, 0xf4, 0x9d, 0x78, 0xb0, 0xe7, 0x65, 0x38, 0x1a, 0x16, 0x23, 0xd2, 0xbc, 0x10, 0x91,
0xcb, 0xeb, 0x60, 0x38, 0x90, 0x89, 0x68, 0x24, 0x3c, 0xe1, 0x68, 0x92, 0x90, 0x77, 0xa4, 0xd1,
0x70, 0x11, 0x8f, 0x2f, 0x71, 0xfa, 0x92, 0xba, 0x62, 0x32, 0x5b, 0xdb, 0x69, 0x3c, 0x2a, 0x4b,
0x87, 0xb3, 0x81, 0x04, 0xaa, 0xc5, 0x08, 0x5c, 0x58, 0x83, 0xdb, 0xb5, 0xeb, 0xf8, 0xdf, 0xa4,
0xb8, 0x1e, 0x2b, 0x72, 0xba, 0x5c, 0x7c, 0x5a, 0x26, 0xed, 0x2a, 0x41, 0x36, 0xa8, 0x2c, 0xa0,
0x49, 0x7c, 0x03, 0xee, 0x86, 0x05, 0x88, 0x6a, 0x72, 0xf1, 0x6b, 0x63, 0x21, 0x9a, 0xeb, 0x0f,
0xc6, 0x45, 0x89, 0xc8, 0x44, 0x6a, 0x26, 0xa2, 0x33, 0x2a, 0xb9, 0x2b, 0xb6, 0x56, 0x67, 0x8a,
0xf7, 0xa2, 0x22, 0x2f, 0x7f, 0x02, 0x8a, 0xcc, 0x05, 0x28, 0xcb, 0xca, 0xc0, 0xbe, 0xb7, 0xe6,
0x63, 0xd7, 0xa2, 0xc5, 0x28, 0xc9, 0xc9, 0x45, 0x49, 0xd6, 0x22, 0x54, 0x2e, 0x5f, 0x29, 0xe3,
0xac, 0xa2, 0x5c, 0x18, 0x17, 0xa9, 0xd5, 0x26, 0x07, 0x89, 0x52, 0x75, 0x75, 0x6c, 0xd3, 0x47,
0xa8, 0xfb, 0xa4, 0x00, 0xed, 0xcd, 0xe7, 0x70, 0xe3, 0xa7, 0x0b, 0xe8, 0x20, 0x6e, 0x9e, 0xbb,
0x88, 0x8e, 0xe6, 0x1f, 0x51, 0xb5, 0x69, 0x35, 0xca, 0x37, 0x6f, 0x40, 0xcd, 0xae, 0x3d, 0x68,
0x69, 0x68, 0x42, 0x63, 0x7e, 0x3e, 0x5a, 0x4b, 0x8b, 0xa1, 0x3b, 0xaf, 0x8a, 0xd3, 0xf5, 0xcb,
0xb5, 0x70, 0x5c, 0xa4, 0x22, 0x91, 0xdd, 0xe1, 0x40, 0x62, 0x57, 0xd2, 0x04, 0x32, 0xd1, 0xa5,
0xa3, 0xc7, 0xf8, 0xb8, 0xb3, 0xf5, 0x62, 0x7b, 0x8b, 0x0d, 0x07, 0x8b, 0xd1, 0x36, 0x70, 0x1f,
0xf5, 0x87, 0x15, 0x50, 0x94, 0x7e, 0x89, 0xc6, 0x8a, 0x52, 0xdc, 0xd9, 0xb7, 0x0f, 0xf6, 0x77,
0x97, 0xf1, 0x23, 0x49, 0x82, 0x36, 0xee, 0x78, 0x74, 0x2a, 0x95, 0xda, 0x64, 0xa3, 0x9d, 0x2c,
0x75, 0xc5, 0x27, 0x70, 0x2c, 0xc2, 0x5a, 0x12, 0xa9, 0x48, 0xc4, 0xd6, 0xab, 0x7e, 0xc7, 0xc7,
0x28, 0x5a, 0x92, 0x21, 0xa3, 0x70, 0xe1, 0x1c, 0x68, 0x56, 0x2d, 0x43, 0x67, 0x49, 0x31, 0x1c,
0xd5, 0xd5, 0xf8, 0x3a, 0xf3, 0x55, 0x54, 0x2e, 0xcd, 0xe2, 0xdc, 0xbb, 0x71, 0x5d, 0x2e, 0xba,
0xa8, 0x52, 0x99, 0x86, 0x6d, 0x36, 0xb0, 0xae, 0x92, 0x23, 0xac, 0xdd, 0xb8, 0x15, 0xaa, 0xea,
0x5a, 0xbe, 0x5e, 0xa7, 0x4b, 0x77, 0x40, 0xb1, 0x22, 0x5b, 0x46, 0x59, 0xfe, 0x12, 0xe8, 0x8f,
0xee, 0x86, 0x75, 0x69, 0x36, 0xdc, 0x6b, 0xdf, 0xc7, 0xf9, 0xe2, 0xed, 0x38, 0xb5, 0x7d, 0x2b,
0xc7, 0x70, 0xbb, 0x4b, 0x2e, 0x6a, 0x6a, 0x3a, 0xd9, 0x67, 0xa5, 0x73, 0x89, 0x75, 0x95, 0x1c,
0x21, 0x13, 0x5d, 0x24, 0x91, 0x34, 0x1c, 0xac, 0xb3, 0x60, 0xc2, 0x34, 0x4a, 0x13, 0x29, 0xc5,
0x29, 0xc1, 0xa6, 0x93, 0xf1, 0xf0, 0xe1, 0x43, 0xa7, 0x24, 0xda, 0x56, 0x54, 0x54, 0x74, 0xc7,
0x42, 0xbf, 0x27, 0xac, 0xab, 0xe4, 0x08, 0xb9, 0xa8, 0xaa, 0x86, 0x0f, 0x47, 0xf3, 0x99, 0x42,
0x7c, 0x73, 0xf8, 0x1d, 0xce, 0xf1, 0x23, 0x2b, 0x64, 0xfc, 0x7c, 0xe9, 0x10, 0x17, 0x6a, 0xa8,
0xeb, 0xa6, 0x35, 0x4b, 0xe3, 0xd4, 0x6d, 0x5e, 0xef, 0x96, 0x44, 0x9f, 0x6f, 0xd9, 0xb2, 0xe5,
0xf6, 0x23, 0xbd, 0x5e, 0xd0, 0xf7, 0x19, 0x04, 0xfa, 0x4d, 0x11, 0x06, 0x06, 0x07, 0x85, 0xc1,
0xa1, 0x21, 0x61, 0xc8, 0x68, 0x14, 0x94, 0x25, 0x8a, 0xd8, 0xe5, 0xc6, 0x93, 0x31, 0xb3, 0xc5,
0x22, 0xd4, 0xd7, 0xae, 0x8f, 0x55, 0x14, 0x67, 0x88, 0x71, 0x4a, 0x32, 0xc4, 0x4a, 0xce, 0x02,
0xf1, 0x07, 0x65, 0x61, 0xcc, 0xe1, 0x70, 0x08, 0xaa, 0xbd, 0x5f, 0xc4, 0x9a, 0xd6, 0x2e, 0x17,
0x25, 0x6a, 0x3e, 0x7c, 0xcf, 0x2e, 0x9d, 0xde, 0xab, 0x88, 0xfd, 0xc4, 0x21, 0xe2, 0x40, 0x12,
0xfb, 0x27, 0xa1, 0x32, 0x05, 0x15, 0x29, 0xf8, 0x8a, 0xd8, 0x49, 0xcc, 0xfc, 0x07, 0x82, 0xed,
0xc0, 0x33, 0xfd, 0xb3, 0x30, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82,
};
const BITMAP_OPAQUE pagelayout_load_default_xpm[1] = {{ png, sizeof( png ), "pagelayout_load_default_xpm" }};
//EOF

View File

@ -0,0 +1,103 @@
/* 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, 0x05, 0x5c, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x95, 0x96, 0x69, 0x6c, 0x54,
0x55, 0x14, 0xc7, 0x6f, 0xd0, 0x04, 0x0d, 0x8a, 0x46, 0x6d, 0x48, 0xd4, 0xa0, 0xc6, 0x18, 0x30,
0x24, 0x7c, 0xe0, 0x83, 0x58, 0x3f, 0x99, 0x98, 0x88, 0x26, 0x86, 0xb4, 0x61, 0x09, 0x4a, 0x94,
0x2f, 0x04, 0x63, 0x11, 0x43, 0x51, 0x11, 0x1b, 0xc3, 0xd2, 0x36, 0xb6, 0x6c, 0x11, 0x68, 0xcb,
0x1e, 0x4b, 0xb5, 0x28, 0x29, 0xd2, 0xe5, 0x75, 0x96, 0xce, 0x14, 0x5a, 0xec, 0x46, 0x93, 0x52,
0x4b, 0x29, 0x5d, 0xa0, 0x33, 0x5d, 0xa6, 0xb3, 0xb4, 0x9d, 0xe9, 0x74, 0x66, 0x3a, 0xfb, 0x9b,
0x79, 0xc7, 0x73, 0xee, 0xeb, 0x7b, 0x74, 0xa6, 0x33, 0x26, 0xbe, 0xe4, 0x9f, 0xf7, 0xfa, 0xfa,
0xee, 0xfd, 0xdd, 0xf3, 0x3f, 0xe7, 0x9e, 0x3b, 0x8c, 0x31, 0xf6, 0x11, 0x2a, 0x17, 0xf5, 0xed,
0xfc, 0x3d, 0xa5, 0x32, 0x32, 0xd8, 0x8f, 0x29, 0xde, 0xef, 0x9b, 0x1f, 0xf7, 0x29, 0x2a, 0x03,
0x00, 0x58, 0x3a, 0xd1, 0xb5, 0xb7, 0xb2, 0xb2, 0xd2, 0xec, 0xf1, 0x7a, 0x25, 0xdf, 0xdc, 0x5c,
0xdc, 0xef, 0xf7, 0x4b, 0xfe, 0x40, 0x40, 0x0a, 0x06, 0x83, 0x52, 0x38, 0x1c, 0xe6, 0x0a, 0x85,
0xfc, 0xd2, 0xed, 0xdb, 0xeb, 0x21, 0x18, 0xf4, 0x4a, 0xd1, 0x68, 0x54, 0x12, 0x45, 0x91, 0x2b,
0x16, 0x8b, 0xe1, 0xff, 0x42, 0x92, 0xd5, 0x6e, 0x17, 0x37, 0x6f, 0xdd, 0x56, 0x84, 0x73, 0x2d,
0xff, 0x2f, 0xd0, 0x3e, 0xad, 0x4e, 0x67, 0xf7, 0xf9, 0x7c, 0x30, 0xe7, 0xf7, 0x43, 0x20, 0x10,
0x80, 0x60, 0x28, 0x04, 0x08, 0x00, 0x9c, 0x14, 0x70, 0x42, 0x30, 0x9b, 0xcf, 0x41, 0x4d, 0x0d,
0x03, 0x93, 0xa9, 0x04, 0xe2, 0xf1, 0x38, 0x48, 0x92, 0xa4, 0x8a, 0xbe, 0x73, 0x38, 0x1c, 0xd0,
0xdd, 0xd3, 0x23, 0xad, 0x5b, 0x9f, 0xb9, 0x0b, 0xe7, 0x5b, 0x9a, 0x36, 0x22, 0x9d, 0x5e, 0x6f,
0x4b, 0x07, 0x8a, 0x44, 0x02, 0xd0, 0xd0, 0xb0, 0x12, 0x9a, 0x9a, 0x18, 0x18, 0x0c, 0xaf, 0x41,
0x2c, 0x16, 0x59, 0x04, 0xb2, 0xd9, 0x6c, 0xd0, 0xd3, 0x73, 0x0f, 0x8c, 0x4d, 0x4d, 0xf1, 0x37,
0x56, 0xaf, 0xf9, 0x04, 0xe7, 0x7c, 0xe2, 0x7f, 0x83, 0x4c, 0xa6, 0x52, 0xd0, 0xeb, 0x19, 0x4c,
0x4d, 0x31, 0xd0, 0xe9, 0x18, 0x8c, 0x8d, 0x95, 0xa7, 0x8c, 0xa8, 0xa5, 0xb5, 0x15, 0xbc, 0x5e,
0x0f, 0x5c, 0xf9, 0xe3, 0x5a, 0xf4, 0xc5, 0x15, 0xaf, 0xbe, 0x93, 0x1a, 0xa4, 0xd3, 0xd9, 0xbc,
0x29, 0x40, 0xe1, 0xf0, 0x1c, 0x42, 0x5e, 0x81, 0x07, 0x0f, 0x18, 0x38, 0x9d, 0x0c, 0xee, 0xdf,
0x67, 0xd0, 0xd8, 0xb8, 0x0a, 0xed, 0x8b, 0x71, 0x08, 0x5d, 0xb4, 0x98, 0x99, 0x99, 0x19, 0xb8,
0x73, 0xa7, 0x13, 0x26, 0x27, 0x27, 0xf9, 0x73, 0xe1, 0xa9, 0x33, 0xbe, 0xa5, 0xcb, 0x97, 0xbf,
0x95, 0x1e, 0x34, 0x37, 0xc7, 0x41, 0x3e, 0x9f, 0x1d, 0x23, 0x68, 0x87, 0x7b, 0xf7, 0x72, 0x79,
0x34, 0xd3, 0xd3, 0x0c, 0x2d, 0x94, 0xa3, 0xd2, 0x6a, 0x19, 0x3c, 0x7a, 0x74, 0x02, 0xbf, 0x1b,
0xc3, 0xf1, 0x12, 0xcf, 0xa1, 0xd7, 0xeb, 0x85, 0x81, 0x81, 0x01, 0x78, 0xd0, 0xdf, 0xcf, 0x73,
0x68, 0xb5, 0x5a, 0xe1, 0xa7, 0xe3, 0x25, 0x66, 0x9c, 0x7b, 0x85, 0x0a, 0x5a, 0xb2, 0x84, 0xe5,
0x0a, 0xc2, 0x76, 0x6f, 0x7b, 0xc7, 0x26, 0xb8, 0x75, 0x6b, 0x1d, 0xd4, 0xd7, 0x3f, 0x0f, 0x82,
0xc0, 0xc0, 0x68, 0x64, 0xd0, 0xd2, 0x42, 0x93, 0x32, 0x04, 0xcb, 0x0b, 0xf3, 0x7a, 0x19, 0x0c,
0x0e, 0x32, 0x68, 0x6e, 0x96, 0x81, 0x82, 0xf0, 0x34, 0x8e, 0x59, 0x0b, 0x1d, 0x1d, 0xd9, 0xd0,
0xd5, 0xb5, 0x17, 0x6e, 0xde, 0x3c, 0xcc, 0x73, 0x65, 0xb7, 0xdb, 0xa1, 0x7f, 0xa0, 0x1f, 0x0a,
0x4b, 0x2f, 0x35, 0x2b, 0x95, 0xc8, 0x23, 0xd2, 0x68, 0x8a, 0x9d, 0x82, 0xb0, 0x0c, 0x34, 0x1a,
0xca, 0x81, 0x6c, 0x93, 0xdb, 0x2d, 0x03, 0xfc, 0x7e, 0x86, 0xab, 0x94, 0x41, 0xb1, 0x18, 0xc3,
0xa8, 0x19, 0x78, 0x3c, 0x0c, 0x2d, 0x62, 0x68, 0x95, 0xbc, 0x10, 0x5a, 0x98, 0x20, 0x3c, 0x05,
0xbd, 0xf7, 0x2b, 0xa0, 0xb3, 0xb3, 0x13, 0x34, 0x5a, 0x1d, 0xb4, 0xb5, 0xb5, 0x43, 0x1b, 0x3e,
0x9f, 0xbe, 0x58, 0x71, 0x01, 0x19, 0xcb, 0x54, 0xeb, 0xc6, 0xc7, 0x1b, 0x80, 0x60, 0x06, 0x03,
0xc3, 0x15, 0x31, 0x98, 0x9d, 0x65, 0x98, 0x87, 0xd4, 0xfb, 0x8f, 0xc0, 0xb4, 0x10, 0xfa, 0x8e,
0x22, 0xa7, 0x71, 0x0e, 0x87, 0x91, 0x5b, 0x48, 0xb6, 0xf5, 0xa3, 0x85, 0x77, 0xef, 0x76, 0x43,
0x77, 0xf7, 0x3f, 0xd0, 0xd6, 0xd1, 0xe9, 0x41, 0xc6, 0xeb, 0x2a, 0x08, 0x37, 0x2c, 0x58, 0x2c,
0x86, 0x45, 0x30, 0x25, 0x9a, 0x64, 0x88, 0xcd, 0xc6, 0xb0, 0xec, 0x19, 0xba, 0xf0, 0x1c, 0x46,
0xd7, 0xce, 0x73, 0x43, 0x85, 0x81, 0x1b, 0x1e, 0xc7, 0xcd, 0xa2, 0x2b, 0x4e, 0xcc, 0xe9, 0x14,
0x8c, 0x8e, 0x8e, 0x05, 0x90, 0xb1, 0x3a, 0x01, 0x44, 0x05, 0x31, 0x31, 0x61, 0x04, 0xa1, 0xfe,
0x19, 0x0e, 0x23, 0x0b, 0xa3, 0xd1, 0x44, 0x50, 0x38, 0x2c, 0x5b, 0x46, 0x45, 0xa2, 0xd5, 0xbe,
0x80, 0xd0, 0x2e, 0xb5, 0x02, 0xe9, 0x8e, 0xdd, 0x82, 0x03, 0xb1, 0x63, 0x70, 0x61, 0x25, 0x12,
0x68, 0x95, 0x0a, 0x9a, 0xf5, 0x78, 0x38, 0x08, 0xdb, 0x10, 0x96, 0x73, 0x3e, 0x9f, 0x88, 0x40,
0x64, 0x1f, 0x89, 0x00, 0x74, 0x17, 0x45, 0xb9, 0xfa, 0x6a, 0x6b, 0x19, 0xda, 0xf4, 0x57, 0xc2,
0x9e, 0x52, 0x2e, 0x7a, 0xa6, 0x08, 0x49, 0x58, 0xee, 0x8f, 0x41, 0xda, 0x79, 0x10, 0x45, 0x45,
0x1b, 0xb7, 0xab, 0x6b, 0x27, 0xaf, 0x38, 0x4a, 0x78, 0x20, 0xc0, 0xc0, 0xe5, 0x92, 0xa1, 0xf4,
0x77, 0x28, 0x24, 0x3f, 0x93, 0x6d, 0x23, 0x23, 0xe7, 0x16, 0xb5, 0xa4, 0x85, 0x40, 0xba, 0xdc,
0x6e, 0x77, 0x22, 0xc8, 0x8d, 0xbe, 0x2a, 0xf6, 0x35, 0x37, 0xbf, 0x8b, 0x89, 0x94, 0x27, 0xa4,
0x3d, 0xd4, 0xd7, 0x27, 0x97, 0x34, 0x55, 0x18, 0xbd, 0x23, 0xd1, 0x42, 0x7a, 0x7b, 0xf7, 0xa8,
0x2b, 0x4f, 0x05, 0x24, 0x25, 0x46, 0xa4, 0xd5, 0x72, 0x10, 0xb7, 0x0f, 0x61, 0x82, 0xf0, 0x2c,
0x0c, 0x0d, 0x31, 0xde, 0x11, 0xc8, 0x42, 0x6a, 0xa8, 0x54, 0x24, 0x74, 0xa7, 0x9e, 0x67, 0x36,
0x33, 0xac, 0x2a, 0x06, 0xad, 0xad, 0x1f, 0xf0, 0x9c, 0x2c, 0x84, 0x25, 0x03, 0x17, 0x81, 0x66,
0xdc, 0x6e, 0x5e, 0x2d, 0x93, 0x53, 0x7d, 0x7c, 0x42, 0xda, 0x53, 0x74, 0x6f, 0x6c, 0x5c, 0x03,
0xe3, 0xe3, 0x55, 0x74, 0x44, 0xc0, 0xc3, 0x87, 0x27, 0xb1, 0x00, 0x5e, 0xe2, 0xef, 0xa9, 0xef,
0xe9, 0xf5, 0x2f, 0x73, 0x90, 0xa2, 0x64, 0xe0, 0xa2, 0x1c, 0x69, 0x08, 0x84, 0x3d, 0x8a, 0xa2,
0x32, 0x99, 0xff, 0xe4, 0x13, 0x19, 0x0c, 0x6f, 0xc2, 0xb0, 0xa9, 0x1c, 0xae, 0x1e, 0x3c, 0x0c,
0x45, 0x59, 0x5b, 0x54, 0x1d, 0xdb, 0x9a, 0x05, 0x97, 0x8f, 0xbc, 0x0d, 0x37, 0xaa, 0x9e, 0xe4,
0xdf, 0x1d, 0xdd, 0x92, 0x05, 0xc5, 0xd9, 0x5b, 0xd3, 0xea, 0x5a, 0xc1, 0xcf, 0xe2, 0x63, 0x90,
0x46, 0x63, 0x73, 0x21, 0x88, 0xa2, 0x1a, 0x1a, 0x3a, 0x8f, 0x6d, 0xa6, 0x04, 0xf3, 0xe5, 0xe6,
0xbd, 0xef, 0xec, 0x97, 0x5f, 0xc3, 0xa5, 0x6f, 0xf6, 0x41, 0xdb, 0xf5, 0x6a, 0x68, 0xbf, 0x51,
0x0b, 0x1d, 0xa8, 0x3b, 0xd5, 0x75, 0xd0, 0x56, 0x7d, 0x05, 0x8c, 0x35, 0x1f, 0x43, 0x4b, 0xcd,
0x49, 0xe8, 0xac, 0x11, 0xd2, 0xaa, 0xfb, 0x66, 0x53, 0x48, 0x05, 0x09, 0x08, 0x72, 0xba, 0x5c,
0xa0, 0x44, 0xb5, 0xb0, 0x02, 0x09, 0x54, 0x5f, 0x72, 0x16, 0x02, 0xc1, 0x20, 0xef, 0xea, 0x21,
0xea, 0xea, 0x91, 0x08, 0x36, 0xd9, 0x08, 0xdf, 0x2f, 0xca, 0xe1, 0x98, 0x4e, 0xb8, 0x71, 0x1f,
0x5b, 0x27, 0x08, 0x1a, 0xdb, 0x34, 0xee, 0x64, 0x25, 0x2a, 0x5e, 0x81, 0xf3, 0x85, 0x51, 0x86,
0x20, 0x01, 0x41, 0x78, 0xbc, 0xc3, 0xe5, 0x03, 0x7b, 0x20, 0x6f, 0x43, 0xe6, 0x22, 0x4d, 0x5b,
0x2d, 0x2a, 0xf0, 0x62, 0xce, 0x17, 0x50, 0xbc, 0xf1, 0x7d, 0xae, 0xc1, 0xf6, 0xbf, 0x13, 0x41,
0x75, 0x82, 0x60, 0x9b, 0x9a, 0x9e, 0x06, 0x8a, 0x4a, 0x81, 0xcd, 0xce, 0x97, 0x7b, 0xd9, 0xae,
0xdd, 0x20, 0x9c, 0x29, 0xe3, 0x67, 0xd5, 0xef, 0xf9, 0x07, 0xa0, 0x60, 0xf3, 0x87, 0x09, 0x2a,
0xdc, 0xb2, 0x01, 0x9c, 0xb6, 0x09, 0x35, 0xba, 0xda, 0xe3, 0xf9, 0xf0, 0xdb, 0xf7, 0xbb, 0xb9,
0x46, 0x7b, 0xbb, 0x13, 0x41, 0xe5, 0xe5, 0x15, 0x23, 0x93, 0xd8, 0x97, 0x28, 0xaa, 0x64, 0x0b,
0x09, 0x54, 0x87, 0x20, 0xea, 0x18, 0x04, 0xa3, 0xc8, 0xf8, 0xe1, 0x88, 0x56, 0x2a, 0x6d, 0x26,
0xbc, 0xc0, 0xce, 0x48, 0x92, 0xad, 0xc3, 0xc3, 0xc3, 0x33, 0x0a, 0x28, 0x37, 0x2f, 0x2f, 0xaf,
0xcf, 0x81, 0xa7, 0x23, 0x45, 0x95, 0x6c, 0x21, 0x07, 0x9d, 0x2e, 0xe5, 0x1b, 0xf9, 0xfa, 0xd5,
0xfd, 0x70, 0xfe, 0x97, 0x4d, 0x5c, 0x17, 0x4e, 0x6d, 0x4e, 0x90, 0xa1, 0xfe, 0x04, 0x07, 0x6a,
0x31, 0xea, 0xf2, 0xcf, 0x36, 0xaa, 0xba, 0xf4, 0xd5, 0x8e, 0x59, 0x05, 0xf4, 0x5d, 0x4e, 0x4e,
0x4e, 0xaf, 0xc9, 0x6c, 0x16, 0xcd, 0x23, 0xa3, 0xe2, 0xe8, 0xd8, 0x98, 0x38, 0x6e, 0xb1, 0x88,
0x96, 0x89, 0x09, 0x71, 0xc2, 0x6a, 0x15, 0x2b, 0x0f, 0x15, 0xc4, 0x1b, 0x7e, 0xad, 0x88, 0xdb,
0x1d, 0x0e, 0xf1, 0x72, 0xd9, 0x8e, 0x78, 0xd1, 0xc1, 0x4c, 0x49, 0xd5, 0xa1, 0x4c, 0xa9, 0x98,
0xeb, 0x3d, 0xa9, 0xaa, 0x72, 0x7f, 0xdc, 0xe5, 0x72, 0x89, 0xc2, 0x91, 0x1f, 0xe2, 0xe5, 0x9f,
0x67, 0x4b, 0x8a, 0x4a, 0x77, 0x6e, 0x77, 0x2a, 0xdd, 0x7b, 0x1b, 0xea, 0x28, 0xea, 0x04, 0xea,
0x58, 0x92, 0x8e, 0xa6, 0x51, 0x71, 0x0a, 0x15, 0xa5, 0xd0, 0x49, 0x14, 0xfd, 0xf0, 0x5c, 0xf9,
0x2f, 0xb1, 0x1e, 0x76, 0x45, 0x80, 0x57, 0x13, 0x05, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE pagelayout_new_xpm[1] = {{ png, sizeof( png ), "pagelayout_new_xpm" }};
//EOF

View File

@ -0,0 +1,98 @@
/* 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, 0x05, 0x17, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x9d, 0x95, 0x6d, 0x4c, 0x53,
0x57, 0x18, 0xc7, 0xc1, 0x99, 0x98, 0x48, 0xe2, 0x07, 0x01, 0x35, 0xb0, 0xe0, 0x46, 0xf6, 0x62,
0x34, 0x86, 0x6c, 0x99, 0x53, 0x98, 0x1f, 0x4c, 0x36, 0xc7, 0x88, 0x44, 0x66, 0xa8, 0x46, 0x24,
0x9b, 0x7c, 0x58, 0x5c, 0x28, 0x1b, 0x99, 0x6e, 0x38, 0x25, 0x46, 0xa3, 0x25, 0xf2, 0xe6, 0xa2,
0x22, 0xb0, 0x09, 0x0c, 0x86, 0x56, 0x34, 0x12, 0x1c, 0x56, 0x8a, 0x83, 0x38, 0xb6, 0x55, 0x2a,
0x5d, 0x02, 0x43, 0x44, 0x98, 0x0b, 0x50, 0x2a, 0xf4, 0x05, 0xda, 0x52, 0x5a, 0x68, 0x29, 0x70,
0xe9, 0xfd, 0xef, 0x9c, 0x03, 0xf7, 0x42, 0x4b, 0x61, 0x2f, 0x27, 0xf9, 0xa5, 0xcd, 0xbd, 0xe7,
0x9c, 0x5f, 0x9f, 0xe7, 0x3c, 0xe7, 0x69, 0x40, 0x40, 0x40, 0xc0, 0x07, 0x84, 0xa3, 0x84, 0x2f,
0xe7, 0x3e, 0xff, 0x0b, 0xc7, 0xe6, 0xd6, 0x25, 0x11, 0x42, 0x01, 0x04, 0x2c, 0x05, 0x1d, 0x5f,
0xc8, 0xe5, 0xf2, 0x3e, 0xbb, 0xc3, 0xc1, 0x8f, 0x8d, 0x8f, 0x7b, 0x9c, 0x4e, 0x27, 0xef, 0x74,
0xb9, 0xf8, 0x89, 0x89, 0x09, 0x7e, 0x72, 0x72, 0x92, 0x31, 0x35, 0x35, 0x25, 0x32, 0x3d, 0x3d,
0xcd, 0x73, 0x1c, 0xc7, 0x98, 0x99, 0x99, 0xe1, 0xdd, 0x6e, 0x37, 0xaf, 0x37, 0x1a, 0x39, 0xc9,
0x81, 0x83, 0xd9, 0x64, 0xaf, 0x35, 0xcb, 0x89, 0x8e, 0x29, 0xeb, 0xeb, 0x8d, 0x63, 0x63, 0x63,
0x18, 0x77, 0x3a, 0xe1, 0x72, 0xb9, 0x30, 0xe1, 0x76, 0x83, 0x08, 0x40, 0x36, 0x05, 0xd9, 0x90,
0x41, 0x36, 0x65, 0x78, 0x3c, 0x1e, 0xf0, 0x3c, 0x2f, 0x42, 0xe7, 0x99, 0x4c, 0x26, 0xb4, 0xb5,
0xb7, 0xf3, 0x6f, 0x6e, 0x8f, 0x3e, 0x42, 0xf6, 0x5b, 0xb5, 0x64, 0x44, 0xf5, 0xf7, 0xef, 0x1b,
0xfe, 0x8d, 0x88, 0x4a, 0xfc, 0x89, 0x0c, 0x06, 0x03, 0xda, 0xdb, 0x1f, 0xa3, 0xb1, 0xa9, 0xc9,
0xf3, 0xf2, 0xa6, 0x2d, 0xf1, 0x64, 0xcf, 0x17, 0xfe, 0x97, 0xc8, 0x62, 0xb1, 0x80, 0xa4, 0x17,
0xa9, 0xa9, 0xa9, 0xc8, 0xc8, 0xc8, 0x40, 0x5e, 0x5e, 0x1e, 0x6a, 0x6a, 0x6a, 0x98, 0x5c, 0x88,
0x48, 0xf5, 0xf0, 0x21, 0x1c, 0x0e, 0x3b, 0x7e, 0xa8, 0xba, 0x35, 0x1d, 0xbc, 0xfe, 0xc5, 0xb7,
0xfd, 0x8b, 0xea, 0xeb, 0x0d, 0x0e, 0x3f, 0xa2, 0xde, 0xde, 0x5e, 0x24, 0x24, 0x24, 0x60, 0xe5,
0xca, 0x95, 0x74, 0xe6, 0x22, 0x36, 0x6f, 0xde, 0x8c, 0xea, 0xea, 0x6a, 0x8c, 0x8c, 0x8c, 0xa0,
0xa5, 0x45, 0x83, 0xa1, 0xa1, 0x21, 0xf6, 0x3d, 0xeb, 0x52, 0xc1, 0xd8, 0xaa, 0x35, 0x6b, 0x5e,
0x5d, 0x5a, 0x34, 0x3e, 0x3e, 0x2b, 0x9a, 0x98, 0x40, 0x6e, 0x6e, 0x2e, 0x56, 0xaf, 0x5e, 0xcd,
0x36, 0x8c, 0x8c, 0x8c, 0x44, 0xee, 0xf9, 0x1a, 0xdc, 0xbe, 0x6e, 0xc1, 0xad, 0x6b, 0x66, 0x54,
0x7e, 0xdf, 0x82, 0xe8, 0xe8, 0x18, 0x51, 0xb8, 0x6d, 0xdb, 0x36, 0xa8, 0xd5, 0x6a, 0x3c, 0xed,
0xea, 0x62, 0xa9, 0xd5, 0xeb, 0xf5, 0x38, 0x95, 0x7f, 0xa5, 0x8f, 0xbc, 0x5b, 0xbf, 0xa4, 0xc8,
0x36, 0x3a, 0x8a, 0xa4, 0xa4, 0x24, 0xb6, 0x41, 0x60, 0x60, 0x20, 0xd2, 0xd3, 0xd3, 0xa1, 0xfa,
0x79, 0x06, 0xd7, 0x4b, 0xe0, 0x85, 0xea, 0x01, 0xa0, 0x54, 0x2a, 0x11, 0x1e, 0x1e, 0xce, 0xe6,
0x46, 0x45, 0x45, 0xa1, 0xa1, 0xa1, 0x91, 0x9d, 0x95, 0xd1, 0x68, 0x44, 0x57, 0x77, 0x17, 0xb2,
0x0a, 0x4b, 0x7f, 0x11, 0x2a, 0x71, 0x5e, 0xe4, 0x70, 0x30, 0xc9, 0xee, 0xdd, 0xbb, 0xd9, 0xc2,
0x0d, 0x1b, 0x36, 0xa0, 0xb1, 0xb1, 0x11, 0xfa, 0xe7, 0xb3, 0x1b, 0xe7, 0xcb, 0xfe, 0xc2, 0x96,
0x4d, 0xef, 0xe2, 0xb5, 0x57, 0x76, 0xe2, 0xfc, 0xe9, 0x0e, 0xf6, 0xec, 0xb9, 0x16, 0x78, 0xf6,
0xec, 0x19, 0xd6, 0xad, 0x5b, 0xc7, 0xd6, 0xbc, 0xb3, 0x73, 0x27, 0x1e, 0x92, 0xb3, 0xaa, 0x53,
0xd6, 0xa3, 0xb9, 0x59, 0x8d, 0x66, 0x8d, 0x06, 0x97, 0x4b, 0x2a, 0xaf, 0x92, 0x77, 0x41, 0x5e,
0xa2, 0x94, 0x94, 0x14, 0xb6, 0x20, 0x38, 0x38, 0x18, 0xdd, 0xdd, 0xdd, 0xa0, 0xa3, 0x55, 0x33,
0x2b, 0x8a, 0xd9, 0x9e, 0x2c, 0xa6, 0xea, 0xad, 0x37, 0xf6, 0xb1, 0x67, 0x1a, 0x15, 0x9b, 0x82,
0x27, 0x4f, 0x9e, 0x60, 0xed, 0xda, 0xb5, 0xec, 0x5d, 0x7c, 0x7c, 0x3c, 0x3a, 0x3b, 0x3b, 0xd1,
0xda, 0xda, 0x86, 0xb6, 0xb6, 0x3f, 0xd0, 0xfc, 0x48, 0x63, 0x27, 0xcf, 0x5f, 0x12, 0x45, 0xe4,
0xc2, 0x8a, 0x29, 0xa3, 0x22, 0x3a, 0x99, 0x8e, 0x8e, 0xd6, 0x59, 0xd1, 0x9e, 0xd8, 0xe3, 0xa2,
0xe8, 0xbd, 0x5d, 0x52, 0xf6, 0x8c, 0xfe, 0x08, 0x3a, 0x68, 0xd1, 0x44, 0x44, 0x44, 0xb0, 0x77,
0x3b, 0x76, 0xec, 0x60, 0xa9, 0xa3, 0x95, 0x3a, 0x3c, 0x3c, 0x8c, 0xfe, 0x7e, 0x9d, 0x8b, 0x3c,
0xdf, 0xe4, 0x25, 0x1a, 0xb1, 0xd9, 0x10, 0x17, 0x17, 0xc7, 0x16, 0x84, 0x84, 0x84, 0xb0, 0x8a,
0xb2, 0x59, 0x01, 0x79, 0x19, 0x50, 0x52, 0xe0, 0x80, 0x24, 0x41, 0x86, 0x84, 0x3d, 0xa7, 0xf0,
0xed, 0x45, 0x2b, 0xe4, 0xa5, 0x80, 0xd5, 0x0c, 0x16, 0x79, 0x58, 0x58, 0x18, 0x5b, 0x13, 0x13,
0x13, 0x83, 0x51, 0x92, 0x7e, 0x7a, 0x2d, 0x48, 0xc7, 0x60, 0x90, 0x4a, 0xa4, 0xa2, 0xd7, 0x45,
0xd1, 0xa8, 0xdd, 0x0e, 0x5a, 0x10, 0xf4, 0x33, 0x2d, 0x2d, 0x4d, 0xfc, 0xf5, 0x89, 0x89, 0x89,
0x68, 0xfd, 0xdd, 0x81, 0x1b, 0x65, 0xf3, 0x85, 0x40, 0xc5, 0x4f, 0x1f, 0xcf, 0xa0, 0xbc, 0xbc,
0x1c, 0xa1, 0xa1, 0xa1, 0x62, 0x24, 0x34, 0xfd, 0x74, 0xd0, 0x8b, 0x2c, 0x5c, 0x6e, 0x52, 0xee,
0xf3, 0x22, 0xe5, 0x9c, 0x88, 0x46, 0x25, 0x5c, 0xdc, 0x9b, 0x37, 0x6f, 0x62, 0xe3, 0xc6, 0x8d,
0x6c, 0x93, 0xa0, 0xa0, 0x20, 0x24, 0x1f, 0x92, 0xa2, 0xb8, 0xe0, 0x57, 0x14, 0x5e, 0x6c, 0xc2,
0xc9, 0x13, 0x79, 0x62, 0x14, 0xb4, 0x32, 0xe9, 0x8f, 0xb1, 0x93, 0xf5, 0x42, 0xb7, 0x58, 0x38,
0x6c, 0x36, 0x9b, 0xb7, 0x88, 0x56, 0x1c, 0x15, 0x09, 0x65, 0x4e, 0x1a, 0x2b, 0x9d, 0x04, 0x99,
0x4c, 0x86, 0xad, 0x5b, 0xb7, 0x2e, 0xba, 0xac, 0x2b, 0x56, 0xac, 0x80, 0x44, 0x22, 0x21, 0xe5,
0xdc, 0xee, 0xb7, 0x35, 0x09, 0x78, 0x47, 0xa4, 0x54, 0x32, 0x11, 0x4b, 0x1f, 0x8d, 0x8a, 0x8a,
0x7c, 0xba, 0x84, 0x56, 0xab, 0x45, 0x55, 0x55, 0x15, 0x6a, 0x6b, 0x6b, 0xa1, 0x52, 0xa9, 0xa0,
0xd3, 0xe9, 0xbc, 0x1a, 0xed, 0x42, 0x96, 0x15, 0xd1, 0x42, 0x18, 0xf5, 0x13, 0x15, 0xed, 0x12,
0xee, 0x39, 0x19, 0xf9, 0x9b, 0xf0, 0x6a, 0xb4, 0x0b, 0xbb, 0xba, 0x3f, 0xe1, 0xa2, 0x33, 0xaa,
0xa3, 0x22, 0xd2, 0xa3, 0x7c, 0xa3, 0xa2, 0x67, 0x75, 0xe3, 0xf4, 0x59, 0x64, 0x7f, 0xb8, 0x7f,
0x59, 0x72, 0xf6, 0x1d, 0x58, 0x92, 0x5b, 0xb2, 0xf3, 0xdc, 0xbc, 0xa8, 0xae, 0xce, 0x60, 0x25,
0x22, 0x7f, 0x51, 0x15, 0x7f, 0xfa, 0x19, 0x4a, 0xd3, 0x8f, 0xa1, 0xb9, 0xfa, 0x0e, 0xd4, 0x35,
0xb5, 0x78, 0x44, 0x68, 0xb9, 0x73, 0x97, 0xa1, 0xf9, 0x51, 0xf1, 0x8f, 0xb4, 0x3d, 0x68, 0x72,
0x8b, 0x22, 0x05, 0x11, 0x59, 0xac, 0x56, 0x2c, 0x8c, 0x4a, 0xa8, 0x40, 0x2a, 0xba, 0x77, 0xa5,
0x18, 0x2e, 0x92, 0x42, 0x7a, 0x5e, 0x6e, 0x92, 0xc2, 0x49, 0x92, 0x42, 0x21, 0x8d, 0xbe, 0xa9,
0xf4, 0x85, 0x5c, 0xdc, 0xf9, 0xd4, 0x29, 0x14, 0x75, 0x06, 0x33, 0xb9, 0xc9, 0x42, 0x54, 0xac,
0x02, 0xe7, 0x52, 0x58, 0x44, 0x44, 0x0a, 0x22, 0xa2, 0xe7, 0x55, 0x76, 0xe2, 0x73, 0x64, 0xc6,
0x46, 0x2f, 0xc2, 0xac, 0x1f, 0x10, 0x85, 0x25, 0xd2, 0x8f, 0x91, 0xb3, 0x77, 0x17, 0xe3, 0x4f,
0xf5, 0x6f, 0xde, 0xa2, 0xbb, 0x0a, 0x85, 0x61, 0xd8, 0x6c, 0x06, 0x8d, 0xca, 0x37, 0x85, 0x45,
0x47, 0xd2, 0xa0, 0x28, 0x28, 0x62, 0xe7, 0x75, 0xfd, 0xdc, 0x09, 0xc8, 0x24, 0xef, 0x7b, 0x91,
0xb5, 0x3f, 0x16, 0x16, 0xc3, 0xa0, 0x18, 0x5d, 0x6d, 0xfe, 0x39, 0x5c, 0xcb, 0x48, 0x63, 0xf4,
0x77, 0xb4, 0x79, 0x8b, 0x2a, 0x2a, 0x2a, 0xb5, 0x43, 0xa4, 0x2f, 0xd1, 0xa8, 0x7c, 0x53, 0x48,
0x45, 0x77, 0x89, 0x48, 0x28, 0x0e, 0x1a, 0x99, 0x6b, 0x41, 0x35, 0x0a, 0x15, 0x29, 0xa4, 0x73,
0xca, 0x27, 0xad, 0x3d, 0x3d, 0x3d, 0x23, 0x82, 0xe8, 0x68, 0x66, 0x66, 0x66, 0xa7, 0x89, 0xfc,
0x3b, 0xd2, 0xa8, 0x7c, 0x53, 0xc8, 0x44, 0x97, 0x0b, 0x59, 0x71, 0x54, 0xdf, 0x38, 0x8e, 0xef,
0x2e, 0x26, 0x32, 0xae, 0x5e, 0x92, 0x78, 0xd1, 0x70, 0xef, 0x02, 0x13, 0x2a, 0x49, 0xd4, 0x15,
0x87, 0xf6, 0x8a, 0x94, 0xa6, 0x1e, 0x1e, 0x15, 0x44, 0x5f, 0x49, 0xa5, 0xd2, 0x8e, 0xde, 0xbe,
0x3e, 0xae, 0x4f, 0xdb, 0xcf, 0xf5, 0xeb, 0x74, 0xdc, 0xf3, 0x81, 0x01, 0x6e, 0x60, 0x70, 0x90,
0x1b, 0xd4, 0xeb, 0x39, 0xf9, 0x19, 0x99, 0xe7, 0xa7, 0xf2, 0x4a, 0x8f, 0xd1, 0x64, 0xe2, 0xca,
0x8a, 0x0e, 0x7b, 0xb2, 0x4f, 0x47, 0xf3, 0x22, 0x67, 0xa2, 0xf9, 0x1c, 0x46, 0x0c, 0x7f, 0x5b,
0x7e, 0xdc, 0x63, 0xb5, 0x5a, 0x39, 0xc5, 0xd9, 0xaf, 0x3d, 0x15, 0x1f, 0xed, 0xe3, 0x05, 0x0a,
0x3f, 0x49, 0xb6, 0x08, 0xdd, 0xfb, 0x20, 0x21, 0x97, 0x70, 0x81, 0x90, 0xe7, 0x43, 0xee, 0x12,
0xe4, 0xf8, 0x21, 0xdb, 0x0f, 0xdf, 0x10, 0x4e, 0x12, 0x22, 0xfe, 0x06, 0x07, 0xf6, 0x34, 0x4a,
0xcd, 0xd3, 0x93, 0xba, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE pagelayout_normal_view_mode_xpm[1] = {{ png, sizeof( png ), "pagelayout_normal_view_mode_xpm" }};
//EOF

View File

@ -0,0 +1,105 @@
/* 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, 0x05, 0x80, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x95, 0x96, 0x5b, 0x6c, 0x1c,
0x57, 0x19, 0xc7, 0x7f, 0xdf, 0x99, 0xcb, 0xce, 0x78, 0x77, 0xbc, 0xf6, 0xc6, 0xf1, 0x26, 0xce,
0x85, 0x86, 0x5c, 0x6a, 0xb7, 0x05, 0xd1, 0x1a, 0x91, 0x10, 0x40, 0xa4, 0x0d, 0x26, 0xa9, 0x42,
0x14, 0x54, 0x2a, 0x01, 0x12, 0x0f, 0xa8, 0xf0, 0x02, 0x4a, 0x21, 0x44, 0x04, 0x2b, 0x08, 0x08,
0xb4, 0x42, 0xe1, 0xd2, 0x17, 0x44, 0xa1, 0x15, 0x08, 0x55, 0x95, 0x82, 0x80, 0x17, 0x90, 0x40,
0xa2, 0xa9, 0x48, 0xc5, 0x43, 0xda, 0xaa, 0x95, 0x22, 0x92, 0x86, 0x16, 0x99, 0x24, 0x4d, 0xf1,
0xd2, 0x38, 0x5e, 0x5f, 0x76, 0xd7, 0xeb, 0xbd, 0xef, 0xcc, 0x1c, 0x1e, 0x66, 0x3d, 0xd9, 0x4d,
0x9d, 0xa8, 0x7c, 0xd2, 0x48, 0x33, 0x73, 0x8e, 0xce, 0xef, 0x7c, 0xff, 0xef, 0x7f, 0xbe, 0x19,
0x01, 0xf6, 0x03, 0x63, 0x80, 0x02, 0x42, 0xfe, 0xbf, 0x90, 0xce, 0x35, 0x03, 0x9c, 0xd1, 0x5a,
0xcf, 0xdf, 0x6a, 0xa2, 0x09, 0x8c, 0x9e, 0x3a, 0x75, 0xea, 0xf0, 0xa7, 0x0e, 0x1e, 0xdc, 0xa2,
0x94, 0xd2, 0x4a, 0x44, 0x10, 0x81, 0x5a, 0x89, 0xe6, 0xa5, 0x33, 0x50, 0xf9, 0xaf, 0x88, 0x32,
0x08, 0x13, 0x6b, 0xb4, 0xbb, 0x63, 0x2f, 0x56, 0x66, 0x13, 0x22, 0x12, 0x51, 0x44, 0x68, 0xb7,
0xdb, 0x2c, 0x16, 0x8b, 0xc1, 0x91, 0x23, 0x47, 0x9f, 0x10, 0x91, 0x93, 0x5a, 0xeb, 0xf2, 0xad,
0x40, 0x6a, 0x30, 0x93, 0x71, 0x95, 0x44, 0x41, 0x18, 0x50, 0x7b, 0xe9, 0x49, 0xdc, 0xfa, 0x14,
0x9e, 0x59, 0xa5, 0x55, 0x2e, 0x42, 0x18, 0x62, 0x0f, 0xac, 0x91, 0xd6, 0xcb, 0x7f, 0x67, 0xd9,
0xde, 0x46, 0xfa, 0x81, 0x6f, 0xa2, 0x1c, 0x2f, 0x86, 0x19, 0x22, 0xe6, 0xf1, 0xe3, 0x93, 0x93,
0x57, 0xa7, 0xa7, 0xdf, 0x12, 0x91, 0x67, 0xb5, 0xd6, 0xcd, 0x9b, 0x41, 0x0a, 0x08, 0x45, 0x44,
0x03, 0x84, 0xf5, 0x12, 0xcd, 0x33, 0xdf, 0x26, 0x5d, 0x7d, 0x91, 0xb9, 0x6b, 0xd7, 0xb9, 0x90,
0x5f, 0xc7, 0xc5, 0xc1, 0x2f, 0xf0, 0xda, 0xd0, 0x23, 0xbc, 0xb6, 0xb0, 0x99, 0xd9, 0xd9, 0x65,
0x92, 0xb5, 0x57, 0x59, 0x3e, 0x7d, 0x8c, 0xe6, 0xec, 0x54, 0xbc, 0x48, 0x18, 0x86, 0x28, 0x44,
0x7e, 0x74, 0xf2, 0x87, 0x4f, 0x6d, 0x19, 0xbd, 0x7b, 0x42, 0x44, 0x8c, 0xd5, 0x40, 0x71, 0x34,
0x5f, 0x7e, 0x92, 0xdc, 0x7c, 0x9e, 0x73, 0xd7, 0x86, 0x98, 0xda, 0xfa, 0x28, 0xd9, 0x4f, 0x1e,
0x23, 0x57, 0x4b, 0x42, 0x66, 0x2b, 0x03, 0xf7, 0x7f, 0x85, 0xda, 0x9e, 0xc7, 0x79, 0xa3, 0x76,
0x37, 0x56, 0xed, 0x0a, 0xb5, 0x57, 0x9f, 0x06, 0x1d, 0x95, 0x54, 0x29, 0xc5, 0x72, 0x65, 0x99,
0x9d, 0xe3, 0xf7, 0xa9, 0x13, 0xdf, 0xfb, 0xee, 0x1f, 0xd7, 0x64, 0x37, 0x8e, 0xaf, 0x0e, 0xd2,
0x9a, 0xd6, 0xd4, 0x69, 0x3c, 0xfe, 0x43, 0x65, 0xf8, 0x13, 0xf4, 0xef, 0x3d, 0xc6, 0xae, 0x9d,
0xbb, 0x99, 0x9d, 0xcb, 0x33, 0x3f, 0xbf, 0x40, 0xb1, 0x58, 0xa2, 0xcf, 0xe9, 0x23, 0x95, 0xf4,
0x70, 0x77, 0x3f, 0x42, 0xae, 0xbe, 0x91, 0xa4, 0xbc, 0xcd, 0xd2, 0xd9, 0x5f, 0xa2, 0x94, 0xc2,
0xb6, 0x6d, 0x2c, 0xd3, 0xa2, 0x5e, 0x6f, 0x70, 0x70, 0xdf, 0x84, 0xf5, 0x8d, 0xe3, 0xdf, 0x3a,
0xe3, 0xa4, 0xd3, 0xdb, 0x6f, 0xae, 0x51, 0x14, 0x85, 0x29, 0xda, 0x0b, 0x6f, 0x91, 0xb8, 0xeb,
0xab, 0x6c, 0x18, 0x19, 0x61, 0x66, 0xe6, 0x3a, 0x6b, 0x87, 0x86, 0x10, 0x51, 0x94, 0x4a, 0x65,
0x9c, 0x84, 0x83, 0x46, 0x13, 0x04, 0x3e, 0xe5, 0xf1, 0x2f, 0x53, 0x39, 0xff, 0x18, 0xa6, 0x93,
0x47, 0x44, 0x30, 0x4d, 0x93, 0x74, 0xba, 0x9f, 0x85, 0xc5, 0x45, 0xc6, 0x46, 0x47, 0xf9, 0xe2,
0xc3, 0x0f, 0x79, 0x8d, 0xb6, 0x9c, 0x16, 0x91, 0xdd, 0x5a, 0xeb, 0x7c, 0x0f, 0x48, 0x5a, 0x45,
0xca, 0x75, 0x93, 0xf9, 0x52, 0x19, 0x79, 0xf3, 0x0a, 0x7e, 0x10, 0xd0, 0x68, 0x35, 0x68, 0x34,
0x1a, 0x34, 0x9b, 0x4d, 0x4c, 0xd3, 0xc4, 0x68, 0x1b, 0x51, 0x06, 0xae, 0x47, 0xd3, 0xca, 0x62,
0xd6, 0xae, 0xa3, 0x94, 0xc2, 0xb2, 0x2c, 0x32, 0x99, 0x0c, 0x97, 0x2e, 0x5d, 0xe6, 0xe2, 0xc5,
0x7f, 0x92, 0xcd, 0x0e, 0xf3, 0xf9, 0x03, 0x0f, 0xbc, 0xd7, 0x71, 0x7f, 0xfd, 0x7b, 0x11, 0x39,
0xa4, 0xb5, 0x2e, 0x77, 0x81, 0xca, 0x68, 0xcb, 0x63, 0x28, 0x9b, 0x21, 0xe5, 0xa5, 0xf0, 0x92,
0xfd, 0xb8, 0xae, 0xcb, 0xcf, 0x7f, 0xf1, 0x14, 0x85, 0x42, 0x01, 0x1d, 0x86, 0x8c, 0x6c, 0x58,
0xcf, 0xfa, 0x0d, 0x59, 0x0c, 0x25, 0xf8, 0x76, 0x1a, 0x69, 0xcf, 0x43, 0xab, 0x86, 0x65, 0x39,
0xf4, 0xf5, 0xf5, 0xb1, 0x69, 0xf3, 0x26, 0xf2, 0xb3, 0xb3, 0xfc, 0xe3, 0xfc, 0x05, 0x06, 0xd2,
0x69, 0xf6, 0x7c, 0xf0, 0x7d, 0x7b, 0x7e, 0xf6, 0xab, 0x67, 0x7f, 0x2a, 0x22, 0x47, 0x63, 0x50,
0x68, 0x0f, 0x60, 0x07, 0x6f, 0x60, 0x2a, 0xd0, 0x5a, 0xd3, 0xf6, 0x5b, 0x48, 0x43, 0x50, 0xa2,
0xb0, 0xed, 0x04, 0x73, 0xf3, 0x73, 0xe4, 0x17, 0xe6, 0x28, 0x2e, 0x6d, 0x66, 0x6c, 0x6c, 0x3b,
0x2e, 0x35, 0xb4, 0x95, 0x46, 0x39, 0x29, 0x08, 0x43, 0x1c, 0xc7, 0x21, 0x33, 0x38, 0x88, 0x65,
0x9a, 0x78, 0x9e, 0x47, 0xbd, 0xde, 0x40, 0x44, 0x18, 0xbf, 0xe7, 0xce, 0xcf, 0x02, 0x27, 0x63,
0x90, 0xb6, 0x06, 0xf0, 0x06, 0x2c, 0xb8, 0x7a, 0x96, 0xd6, 0x9d, 0x7b, 0x11, 0x11, 0xc2, 0x30,
0xe4, 0xc4, 0x89, 0xe3, 0x80, 0x10, 0x84, 0x01, 0xed, 0x76, 0x8b, 0x66, 0xab, 0x41, 0x6b, 0xf6,
0x12, 0xae, 0xd9, 0xc0, 0x4f, 0xbc, 0x07, 0xad, 0x35, 0x4a, 0x45, 0x9e, 0x72, 0x5d, 0x17, 0xc3,
0x30, 0x48, 0x26, 0x93, 0xf8, 0xbe, 0x4f, 0x18, 0x86, 0xd4, 0x6a, 0x75, 0x0b, 0x70, 0x6e, 0x48,
0xb7, 0x75, 0x1f, 0xed, 0xf3, 0x17, 0x18, 0x29, 0x9e, 0x25, 0x57, 0x19, 0x47, 0xf7, 0xa5, 0xf1,
0x7d, 0x1f, 0xc3, 0x50, 0xf1, 0x59, 0x69, 0xfb, 0x6d, 0xda, 0xad, 0x06, 0x23, 0x33, 0x7f, 0xc3,
0x70, 0x5a, 0xe8, 0x8d, 0x1f, 0xe9, 0x98, 0x36, 0x82, 0x89, 0x48, 0xec, 0xc2, 0x20, 0x08, 0xe2,
0x31, 0x40, 0xc7, 0x20, 0x63, 0x78, 0x07, 0x8d, 0xcc, 0x6e, 0x32, 0xd6, 0x0b, 0xb4, 0x5e, 0x7f,
0x9a, 0xd9, 0x0d, 0x0f, 0xd2, 0x1a, 0x1e, 0x8d, 0x77, 0xab, 0x75, 0x48, 0x58, 0xbe, 0x4e, 0x36,
0xf7, 0x1c, 0x6b, 0xbd, 0x02, 0x65, 0xbd, 0x8d, 0xcc, 0x3d, 0x07, 0x62, 0xd3, 0x6a, 0xad, 0xa3,
0x2e, 0x61, 0x44, 0x86, 0x31, 0x8c, 0xe8, 0xcc, 0x5a, 0x96, 0x75, 0xc3, 0xde, 0xba, 0x33, 0xb9,
0xb1, 0xe3, 0x61, 0x72, 0x2f, 0xe6, 0x58, 0x9b, 0x98, 0xa2, 0xbf, 0xf0, 0x17, 0x16, 0x17, 0x5e,
0xa1, 0x11, 0x24, 0x08, 0x34, 0xa4, 0xac, 0x80, 0x7e, 0x29, 0xd0, 0x97, 0x58, 0x26, 0xbf, 0x3c,
0x82, 0x7d, 0xff, 0xa3, 0x51, 0x47, 0xe8, 0x64, 0xd2, 0xb5, 0x7b, 0xa2, 0x76, 0x79, 0xa3, 0x1f,
0xf6, 0xd8, 0x5b, 0x6b, 0x4d, 0x22, 0x91, 0xa0, 0xf9, 0xa1, 0xc3, 0xe4, 0xae, 0x9c, 0x25, 0x75,
0xed, 0xaf, 0x24, 0x83, 0xcb, 0x8c, 0x0c, 0x26, 0x50, 0xa6, 0x49, 0x79, 0xb1, 0x42, 0x55, 0x06,
0x59, 0x1c, 0x9e, 0xc0, 0xdd, 0xf9, 0x10, 0x4e, 0x2a, 0xbd, 0x2a, 0xa0, 0xfb, 0xb9, 0xfb, 0xde,
0x5c, 0xe9, 0x0c, 0x00, 0x09, 0xc7, 0x21, 0xeb, 0xba, 0xe8, 0xe1, 0xcf, 0x10, 0xf8, 0x87, 0xf0,
0x5b, 0x0d, 0x16, 0xa6, 0xcf, 0x41, 0xd0, 0xc4, 0xd9, 0xf5, 0x61, 0x32, 0xa9, 0x34, 0xb6, 0x6d,
0x63, 0x18, 0x46, 0xcf, 0xa2, 0xb7, 0x02, 0xae, 0xda, 0x19, 0xb4, 0xd6, 0x08, 0xa0, 0x3b, 0x69,
0xdb, 0xb6, 0x4d, 0xc2, 0x71, 0xf0, 0xde, 0x3f, 0x11, 0x4b, 0xd1, 0x2d, 0x49, 0xf7, 0xa2, 0xb7,
0xcb, 0xa8, 0x07, 0xa4, 0x3b, 0x59, 0x69, 0x11, 0xe8, 0x02, 0xa2, 0x35, 0x7f, 0xfa, 0xf1, 0x13,
0xe4, 0x2e, 0xbe, 0x7e, 0xfb, 0xaf, 0xdf, 0x2a, 0x19, 0xac, 0xc4, 0x1d, 0xf7, 0x7d, 0xc0, 0xee,
0x91, 0x6e, 0x05, 0xd6, 0x0d, 0x11, 0x60, 0x29, 0x3f, 0xcf, 0xd0, 0xe6, 0x4d, 0x8c, 0x7d, 0xec,
0xa3, 0x88, 0x52, 0xd1, 0x27, 0xf5, 0xa6, 0x42, 0xdf, 0x2e, 0x2c, 0x2f, 0xe5, 0xc7, 0xa0, 0xf0,
0x26, 0xe9, 0x56, 0x6a, 0xb6, 0x22, 0xc0, 0xba, 0xed, 0xdb, 0xb8, 0xf7, 0xc0, 0xfe, 0x5e, 0x09,
0xdf, 0x25, 0xb0, 0x54, 0x2a, 0x85, 0x37, 0x32, 0x0a, 0x23, 0x50, 0x37, 0x44, 0x3a, 0xa0, 0xf8,
0xd2, 0x9a, 0xdf, 0x3d, 0x36, 0xc9, 0xd5, 0xf3, 0xe7, 0xde, 0xb1, 0xd8, 0x91, 0xdf, 0xfc, 0x81,
0x81, 0xe1, 0x75, 0x88, 0x08, 0xcf, 0x7c, 0xfd, 0x4b, 0x14, 0xde, 0xce, 0x01, 0x70, 0x68, 0xf2,
0x07, 0x0c, 0xed, 0xb8, 0xab, 0xbb, 0x46, 0x61, 0x04, 0xea, 0xb6, 0x65, 0xb4, 0xd5, 0x08, 0xdc,
0x19, 0x4b, 0xf4, 0x25, 0x71, 0x3d, 0xef, 0x1d, 0xf5, 0xe9, 0x36, 0xc1, 0xf0, 0x96, 0x6d, 0x38,
0xc9, 0x68, 0x8e, 0x93, 0x4a, 0xf5, 0x9a, 0xa1, 0xb0, 0x58, 0x6c, 0x76, 0x83, 0x56, 0x93, 0x50,
0x6b, 0xcd, 0xa7, 0x8f, 0x7e, 0xa7, 0x47, 0xb6, 0x6e, 0xe9, 0xc2, 0x8e, 0xf4, 0x0f, 0x7e, 0x6d,
0xb2, 0x47, 0xce, 0xe9, 0xe9, 0xe9, 0xc6, 0x0a, 0x48, 0x2e, 0x5f, 0xfe, 0x77, 0x75, 0xbf, 0xde,
0x17, 0x83, 0xba, 0x21, 0xb1, 0x59, 0xb4, 0xe6, 0xf9, 0x3f, 0x3f, 0xce, 0xe2, 0xdc, 0x9b, 0xab,
0xd6, 0xe5, 0x8e, 0xad, 0xbb, 0xf8, 0xf8, 0xc4, 0x61, 0x5e, 0xf8, 0xc9, 0xf7, 0x99, 0x9b, 0xfa,
0x57, 0xfc, 0xde, 0x4f, 0x0f, 0xaa, 0x15, 0x90, 0x51, 0x2a, 0x95, 0xc2, 0x6a, 0xb5, 0xea, 0x8b,
0x28, 0x94, 0x92, 0xb8, 0xad, 0x88, 0x08, 0xe9, 0xf5, 0xeb, 0x54, 0xc2, 0xf3, 0xa8, 0x56, 0xab,
0xe1, 0x52, 0x29, 0xaf, 0x8a, 0xc5, 0x19, 0xe9, 0xfe, 0xab, 0xeb, 0xe4, 0xc4, 0xe0, 0xd2, 0x9c,
0xae, 0x54, 0x2a, 0x61, 0xa0, 0xb5, 0xc2, 0x30, 0xe2, 0x39, 0xcd, 0xb6, 0xef, 0x77, 0x8a, 0xc0,
0xe7, 0x80, 0x7b, 0x01, 0x63, 0x95, 0x1f, 0x48, 0x7d, 0x0b, 0x33, 0xe9, 0x77, 0xf9, 0xce, 0x06,
0x16, 0x80, 0xdf, 0xfe, 0x0f, 0x57, 0x06, 0x6f, 0x93, 0x73, 0x44, 0x23, 0x29, 0x00, 0x00, 0x00,
0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE pagelayout_recent_xpm[1] = {{ png, sizeof( png ), "pagelayout_recent_xpm" }};
//EOF

View File

@ -0,0 +1,98 @@
/* 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, 0x05, 0x09, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x95, 0x96, 0x6b, 0x4c, 0x53,
0x67, 0x18, 0xc7, 0x49, 0xf6, 0xc1, 0x98, 0x25, 0x7c, 0x99, 0x06, 0x63, 0xa6, 0x32, 0xaf, 0x78,
0xd7, 0x29, 0x20, 0x68, 0x70, 0x6a, 0x82, 0xc4, 0x2c, 0x64, 0x64, 0x60, 0x74, 0xc6, 0x19, 0x93,
0x21, 0x19, 0x6c, 0x66, 0xa0, 0x20, 0xa0, 0xc1, 0x4d, 0xae, 0x4e, 0x88, 0x20, 0xe0, 0x54, 0xc8,
0x3a, 0x26, 0x1a, 0x33, 0x23, 0x8c, 0x03, 0x2d, 0xbb, 0x18, 0xb6, 0x21, 0x1d, 0x24, 0x6b, 0xc7,
0xe4, 0xb6, 0x0f, 0x8a, 0x38, 0x68, 0xcb, 0xbd, 0x14, 0x68, 0x29, 0x70, 0xe8, 0xf9, 0xef, 0x79,
0xdf, 0xd0, 0x03, 0xa7, 0x58, 0xc6, 0x4e, 0xf2, 0x4b, 0x0f, 0x70, 0xfa, 0xfe, 0xce, 0x73, 0x79,
0x9f, 0x17, 0x0f, 0x0f, 0x0f, 0x8f, 0x10, 0x22, 0x96, 0x38, 0x37, 0xfd, 0xf9, 0x7f, 0x88, 0x9b,
0xfe, 0xde, 0x71, 0x62, 0x29, 0x00, 0x0f, 0x77, 0xb0, 0xeb, 0xb3, 0xd2, 0xd2, 0xd2, 0x76, 0xcb,
0xf0, 0xb0, 0x34, 0x32, 0x3a, 0xea, 0xb0, 0x5a, 0xad, 0x92, 0xd5, 0x66, 0x93, 0xc6, 0xc6, 0xc6,
0xa4, 0xf1, 0xf1, 0x71, 0x49, 0xa7, 0xd3, 0x49, 0x17, 0x63, 0x62, 0x10, 0x1b, 0x12, 0x82, 0x73,
0xc4, 0xd9, 0xd3, 0xa7, 0x51, 0x59, 0x59, 0x29, 0x89, 0xa2, 0x28, 0x4d, 0x4d, 0x4d, 0x49, 0x76,
0xbb, 0x5d, 0x32, 0x98, 0x4c, 0x62, 0xf8, 0xd1, 0x63, 0x99, 0xb4, 0x96, 0xe7, 0x7c, 0xa2, 0x38,
0xb5, 0x46, 0x63, 0x1a, 0x19, 0x19, 0xc1, 0xa8, 0xd5, 0x0a, 0x9b, 0xcd, 0x86, 0x31, 0xbb, 0x1d,
0x24, 0x41, 0x7a, 0x62, 0x22, 0x72, 0x03, 0x03, 0x31, 0xb6, 0x69, 0x13, 0x30, 0x8d, 0x44, 0x94,
0xed, 0xde, 0x8d, 0xf8, 0xa8, 0x28, 0x38, 0x1c, 0x0e, 0xfe, 0x5c, 0x77, 0x77, 0x37, 0xf4, 0x8d,
0x8d, 0xd2, 0xdb, 0xfe, 0x01, 0x67, 0x68, 0xbd, 0x45, 0x6e, 0x23, 0xd2, 0x54, 0x57, 0x1b, 0x5d,
0x45, 0x79, 0x19, 0x19, 0xf8, 0xd5, 0xdf, 0x5f, 0x16, 0xb8, 0xa2, 0xdd, 0xb7, 0x0f, 0xf9, 0x39,
0x39, 0x5c, 0x64, 0x34, 0x1a, 0xd1, 0xd8, 0xf8, 0x17, 0x7e, 0xaa, 0xa9, 0x71, 0xbc, 0xe5, 0xb3,
0xf9, 0x5d, 0x5a, 0xf3, 0xb5, 0x05, 0x89, 0x3a, 0x5e, 0xbe, 0x44, 0xfa, 0xfe, 0xfd, 0x6e, 0x25,
0x4e, 0x92, 0x82, 0x82, 0x30, 0x30, 0x30, 0xc0, 0x23, 0xaa, 0x7d, 0xf2, 0x04, 0xc3, 0xc3, 0x16,
0x7c, 0x73, 0xff, 0xc1, 0xe4, 0x1b, 0x5e, 0x6f, 0xfa, 0xbd, 0x5a, 0xa4, 0xd1, 0x18, 0x87, 0x67,
0x89, 0xd2, 0x2e, 0x5d, 0xc2, 0xc0, 0xd6, 0xad, 0x8a, 0x45, 0x9f, 0xaf, 0x5d, 0x8b, 0x3d, 0x8b,
0x17, 0xa3, 0x65, 0xcd, 0x1a, 0xd8, 0x7c, 0x7c, 0x50, 0xb5, 0x72, 0x25, 0x9a, 0x7d, 0x7d, 0xa1,
0x52, 0xa9, 0x30, 0x38, 0x38, 0x88, 0xfa, 0xfa, 0x06, 0xf4, 0xf4, 0xf4, 0xf0, 0xfb, 0xb4, 0xdc,
0x1b, 0x23, 0x8b, 0x3c, 0x3d, 0xd7, 0xb9, 0x17, 0x8d, 0x8e, 0x72, 0x51, 0xc2, 0x91, 0x23, 0x73,
0xde, 0x9e, 0x2d, 0x4c, 0xcf, 0xe2, 0xc6, 0xb2, 0x65, 0x78, 0xb1, 0x6e, 0x1d, 0x92, 0x97, 0x2c,
0xe1, 0xbf, 0x8f, 0x8f, 0x8c, 0xa4, 0x48, 0x86, 0xd1, 0xd6, 0xd6, 0x86, 0x96, 0xd6, 0x56, 0x5e,
0x37, 0x83, 0xc1, 0x80, 0x4b, 0xd7, 0xf2, 0xdb, 0xe9, 0x79, 0x2f, 0xb7, 0xa2, 0xa6, 0xa6, 0x26,
0x14, 0xed, 0xd9, 0x33, 0x47, 0x34, 0xb9, 0x71, 0x23, 0xae, 0x7a, 0x79, 0xa1, 0x6f, 0xc3, 0x06,
0x65, 0xfa, 0x42, 0x43, 0x41, 0x1d, 0xca, 0xa3, 0xa9, 0xad, 0x7d, 0xc2, 0x6b, 0x65, 0x32, 0x99,
0xd0, 0xda, 0xd6, 0x8a, 0xb4, 0x82, 0xa2, 0x5f, 0x9c, 0x9d, 0x38, 0x23, 0xa2, 0xb7, 0xa2, 0xf6,
0x46, 0x5e, 0x6e, 0x2e, 0x3a, 0x5c, 0xd2, 0x36, 0x1f, 0x19, 0x7b, 0xf7, 0xf2, 0x74, 0xb1, 0x1a,
0xb3, 0xda, 0x36, 0x34, 0x34, 0xa0, 0x4a, 0xad, 0x41, 0x5d, 0x9d, 0x16, 0x75, 0x74, 0x9f, 0x77,
0xa7, 0xe4, 0x36, 0x39, 0x5e, 0x9f, 0x23, 0x4a, 0xa0, 0xb6, 0x5d, 0xa8, 0x84, 0x71, 0x8f, 0x5e,
0xaa, 0xb9, 0xb9, 0x19, 0x93, 0x93, 0x93, 0x3c, 0x85, 0x2c, 0x6d, 0xad, 0x94, 0x42, 0x9d, 0x4e,
0x0f, 0xbd, 0xfe, 0x4f, 0xd4, 0xfd, 0xde, 0x60, 0x21, 0x87, 0xb7, 0x2c, 0xb2, 0x30, 0x11, 0xbd,
0x55, 0x62, 0x44, 0x84, 0x62, 0x21, 0xc3, 0xfa, 0xf5, 0x73, 0xd2, 0x35, 0x9b, 0x7a, 0x6a, 0x0e,
0xa1, 0xbc, 0x9c, 0xd7, 0x86, 0xc9, 0x68, 0xc3, 0x63, 0x68, 0x68, 0x08, 0xfd, 0xfd, 0xfd, 0xe8,
0xed, 0xed, 0x45, 0x47, 0xc7, 0x4b, 0x1b, 0x39, 0x7c, 0x14, 0x22, 0x56, 0xa7, 0x0b, 0x07, 0x0e,
0xc8, 0x8b, 0xa4, 0x2c, 0x5d, 0x8a, 0xf2, 0x15, 0x2b, 0xa0, 0x5f, 0xbd, 0xda, 0xad, 0xc8, 0x4c,
0x2f, 0x71, 0x2d, 0x29, 0x09, 0xec, 0x92, 0x24, 0x09, 0x34, 0x2d, 0xb8, 0x90, 0x26, 0x06, 0x87,
0x6a, 0xc7, 0x44, 0x1b, 0x64, 0xd1, 0x90, 0xc5, 0x82, 0x6e, 0x2a, 0x68, 0x3a, 0xb5, 0xac, 0x73,
0x91, 0xe2, 0xe5, 0xcb, 0x11, 0xee, 0xe9, 0xc9, 0x17, 0x9b, 0x77, 0x3f, 0x85, 0x87, 0x73, 0x89,
0xf3, 0x62, 0xf7, 0x2c, 0x42, 0x06, 0xd5, 0x6f, 0x46, 0xa4, 0x9e, 0x16, 0xb5, 0x52, 0x8b, 0xde,
0xda, 0xb9, 0x53, 0x31, 0x6e, 0x74, 0xf3, 0x44, 0x23, 0x8b, 0xa8, 0x21, 0x68, 0xf6, 0x71, 0xc1,
0x6c, 0x21, 0xbb, 0xcc, 0x66, 0xb3, 0x52, 0x64, 0xa6, 0xbc, 0xaa, 0xd5, 0x6a, 0x68, 0x16, 0xd8,
0x04, 0x0e, 0xf6, 0x39, 0xdd, 0x9d, 0x15, 0x3b, 0x76, 0x40, 0xab, 0xd5, 0xca, 0xa2, 0xd9, 0x28,
0x23, 0x52, 0xab, 0xb9, 0x28, 0x3b, 0x25, 0x05, 0x5d, 0xb4, 0x19, 0x17, 0x22, 0xaa, 0xf6, 0xf6,
0x46, 0x6f, 0x70, 0x30, 0xbf, 0x67, 0x1b, 0xb8, 0x38, 0x3f, 0x5f, 0x4e, 0xd7, 0xbc, 0x22, 0x56,
0x9f, 0xa8, 0x83, 0x07, 0x15, 0x8b, 0xb1, 0xd4, 0xb5, 0x6c, 0xdf, 0x8e, 0xec, 0xcd, 0x9b, 0x61,
0xdd, 0xb5, 0x4b, 0xf1, 0xb7, 0x9a, 0x55, 0xab, 0xa0, 0xa5, 0xc6, 0x99, 0xda, 0xb6, 0x0d, 0x3f,
0xb3, 0xa8, 0x1e, 0x3d, 0x92, 0x45, 0xb3, 0x51, 0x88, 0xaa, 0x48, 0x74, 0xf2, 0xf8, 0x71, 0x5c,
0xf7, 0xf3, 0x83, 0x69, 0xcb, 0x16, 0xb4, 0xd3, 0xd1, 0x90, 0x4f, 0x63, 0x28, 0x32, 0x2c, 0x0c,
0x9f, 0x1f, 0x3b, 0x81, 0x8b, 0x87, 0xe8, 0x2c, 0x0a, 0x08, 0xc2, 0x79, 0xbf, 0xbd, 0x48, 0xf2,
0x0d, 0x44, 0x1c, 0xc1, 0x7e, 0xbe, 0x10, 0x74, 0x08, 0xe7, 0x02, 0xf7, 0x23, 0x9e, 0x3e, 0x33,
0xdf, 0x8b, 0x40, 0x56, 0xd8, 0xd1, 0x39, 0x3c, 0x48, 0xcd, 0x10, 0x67, 0x44, 0x55, 0x55, 0xc6,
0xde, 0xbe, 0x3e, 0x08, 0x82, 0x80, 0xf4, 0xf4, 0x74, 0x5c, 0xa7, 0xe9, 0xf0, 0x87, 0x4e, 0xc7,
0x47, 0xd2, 0xcd, 0xa8, 0x4f, 0x50, 0x74, 0x36, 0x0e, 0x75, 0x0f, 0xcb, 0xf0, 0xf8, 0xee, 0x7d,
0x3c, 0x2a, 0xf8, 0x8a, 0xdf, 0xd7, 0x97, 0x55, 0xa0, 0xa1, 0x5c, 0xf8, 0x4f, 0xf4, 0x8f, 0x6b,
0xec, 0xb2, 0x48, 0x20, 0x51, 0x3f, 0x8d, 0x7b, 0x36, 0x4a, 0x58, 0xad, 0x58, 0x07, 0x3a, 0x37,
0x30, 0x13, 0x55, 0xe6, 0xdf, 0x84, 0x8d, 0xe6, 0x19, 0x3b, 0xa7, 0xec, 0x74, 0xfe, 0x8c, 0x4f,
0x4c, 0x60, 0x82, 0x60, 0xfb, 0x85, 0xc1, 0x3a, 0xce, 0x1d, 0xb4, 0x71, 0x67, 0x52, 0x27, 0x08,
0x55, 0xc6, 0x3e, 0xda, 0xc9, 0x03, 0x24, 0x1a, 0x34, 0x9b, 0xb9, 0xcc, 0x42, 0x32, 0x36, 0x52,
0x0a, 0x49, 0x24, 0x90, 0x88, 0x8e, 0x77, 0x14, 0x27, 0x7e, 0x8a, 0xe4, 0xc3, 0x01, 0x73, 0xe8,
0x33, 0x74, 0xca, 0xc2, 0x3b, 0xd1, 0x1f, 0x22, 0x2b, 0xf4, 0x1d, 0xce, 0xdf, 0xda, 0xdf, 0x94,
0xa2, 0x0a, 0x41, 0xe0, 0xa9, 0x63, 0x51, 0x39, 0x65, 0x6c, 0x8c, 0xb0, 0xa8, 0x0a, 0xcf, 0xc4,
0x40, 0xb8, 0x51, 0xc8, 0xcf, 0xaa, 0xbb, 0x57, 0x12, 0x91, 0x1a, 0x1e, 0xac, 0x20, 0x2d, 0xe2,
0x30, 0xfa, 0x8d, 0x5d, 0x72, 0x74, 0xdf, 0x5f, 0xbb, 0x82, 0x6f, 0xe3, 0x63, 0x38, 0x1d, 0x4f,
0xf5, 0x4a, 0x91, 0x4a, 0x55, 0xf2, 0xa2, 0x87, 0xe6, 0x12, 0x8b, 0xca, 0x35, 0x85, 0x4c, 0x54,
0x41, 0x22, 0x36, 0x70, 0x99, 0x8c, 0x45, 0xc6, 0x8f, 0x7b, 0x4a, 0xa5, 0x73, 0xcc, 0x8c, 0xcf,
0x4a, 0xe7, 0x84, 0x4b, 0x5a, 0x9f, 0x3d, 0x7b, 0x36, 0xe8, 0x14, 0xc5, 0x26, 0x27, 0x27, 0x37,
0xb3, 0xf6, 0x66, 0x51, 0xb9, 0xa6, 0x90, 0x8b, 0xf2, 0x0a, 0xf8, 0x1c, 0x7c, 0x78, 0x2f, 0x01,
0xb7, 0xae, 0xbf, 0xcf, 0xb9, 0x9d, 0x1b, 0xae, 0xe0, 0xc7, 0xca, 0x6c, 0x2e, 0x54, 0x53, 0xd4,
0xaa, 0x0f, 0x42, 0x65, 0x8a, 0x3e, 0x3e, 0x35, 0xe4, 0x14, 0x9d, 0x8f, 0x8e, 0x8e, 0x7e, 0xfa,
0xbc, 0xbd, 0x5d, 0x6c, 0x7f, 0xd1, 0x21, 0xd2, 0x99, 0x22, 0xfe, 0xd3, 0xd9, 0x29, 0x76, 0x76,
0x75, 0x89, 0x5d, 0x06, 0x83, 0x58, 0x7a, 0x39, 0xd5, 0xf1, 0xc3, 0xd7, 0x25, 0x0e, 0x53, 0x77,
0xb7, 0x58, 0x5c, 0x78, 0xca, 0x91, 0x99, 0x12, 0x20, 0xc9, 0x5c, 0x0e, 0x90, 0xb2, 0x38, 0x81,
0xd2, 0x77, 0xa5, 0x09, 0x0e, 0xfa, 0xff, 0x41, 0x14, 0xbe, 0xb8, 0xe0, 0x50, 0x9d, 0x0c, 0x93,
0x9c, 0x14, 0x7c, 0x74, 0xa2, 0xdf, 0x39, 0xbd, 0x8f, 0x11, 0x57, 0x89, 0x6c, 0xe2, 0x4b, 0x17,
0xae, 0xba, 0x21, 0xeb, 0x15, 0x64, 0xbe, 0x82, 0x1c, 0x22, 0x89, 0x58, 0xf9, 0x2f, 0xfa, 0x67,
0xd2, 0x81, 0xc6, 0xe4, 0x27, 0x77, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82,
};
const BITMAP_OPAQUE pagelayout_special_view_mode_xpm[1] = {{ png, sizeof( png ), "pagelayout_special_view_mode_xpm" }};
//EOF

View File

@ -8,320 +8,320 @@
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x08, 0x06, 0x00, 0x00, 0x00, 0x57, 0x02, 0xf9,
0x87, 0x00, 0x00, 0x13, 0x83, 0x49, 0x44, 0x41, 0x54, 0x68, 0xde, 0xdd, 0x5a, 0x09, 0x78, 0x5b,
0xe5, 0x95, 0x15, 0x5b, 0x18, 0x42, 0xf9, 0x12, 0xca, 0xb4, 0x53, 0x92, 0xf6, 0xa3, 0x30, 0xe9,
0x74, 0x01, 0x66, 0x4a, 0x42, 0x58, 0xcb, 0xd0, 0x00, 0x01, 0x12, 0x48, 0x3e, 0x48, 0x87, 0xad,
0xd0, 0x0e, 0x6b, 0xd8, 0x97, 0x00, 0x49, 0x48, 0x08, 0xd9, 0x57, 0x92, 0x38, 0x31, 0x59, 0xec,
0x90, 0x85, 0x24, 0x76, 0xbc, 0xc6, 0xf1, 0xbe, 0xc4, 0x96, 0x77, 0xcb, 0x96, 0x37, 0xc9, 0xbb,
0x56, 0x4b, 0xb6, 0x24, 0x5b, 0x96, 0x2c, 0x5b, 0xd6, 0xbe, 0xbc, 0xf7, 0xfe, 0x33, 0xf7, 0xd7,
0x34, 0x69, 0x42, 0xec, 0x94, 0xce, 0xd0, 0x65, 0x46, 0xdf, 0x77, 0xad, 0xf7, 0xac, 0x27, 0xe9,
0x9e, 0xff, 0xbf, 0xf7, 0x9c, 0x73, 0x25, 0xc9, 0x00, 0xc8, 0xfe, 0x2f, 0x87, 0xec, 0xff, 0x35,
0x80, 0x59, 0xb3, 0x66, 0x5d, 0xb1, 0x70, 0xe1, 0xc2, 0xa3, 0x4f, 0x3c, 0xf1, 0x44, 0xf9, 0xa3,
0x8f, 0x3e, 0xba, 0x6a, 0xde, 0xbc, 0x79, 0xf7, 0x3f, 0xf5, 0xd4, 0x53, 0x57, 0x8d, 0x77, 0x2d,
0x3d, 0xf6, 0x43, 0xba, 0x36, 0x77, 0xc1, 0x82, 0x05, 0x47, 0x1e, 0x7a, 0xe8, 0xa1, 0x9b, 0xfe,
0x2e, 0x00, 0x3c, 0xfc, 0xf0, 0xc3, 0x8b, 0x57, 0xad, 0x5a, 0x65, 0xd7, 0xeb, 0xf5, 0xfd, 0xd9,
0xd9, 0xd9, 0x96, 0x25, 0x4b, 0x96, 0x38, 0x29, 0xd1, 0x08, 0x25, 0xaa, 0x9e, 0x3f, 0x7f, 0xfe,
0x4e, 0x7a, 0x7c, 0xc1, 0x23, 0x8f, 0x3c, 0xf2, 0x5d, 0x7e, 0x2d, 0x25, 0x2e, 0x4f, 0x4f, 0x4f,
0xb7, 0x14, 0x15, 0x15, 0x59, 0x08, 0x70, 0x90, 0xce, 0x0f, 0xd0, 0x35, 0x3f, 0xf8, 0x9b, 0x02,
0xa0, 0x44, 0xb3, 0xd4, 0x6a, 0x75, 0x3f, 0x1d, 0x77, 0x53, 0xb4, 0x53, 0x58, 0x44, 0x51, 0x74,
0x0c, 0x0c, 0x0c, 0x58, 0xca, 0xca, 0xca, 0x2c, 0x6b, 0xd7, 0xae, 0x1d, 0xa4, 0x44, 0x23, 0x8f,
0x3f, 0xfe, 0xb8, 0x6d, 0xd1, 0xa2, 0x45, 0x91, 0x92, 0x92, 0x92, 0x31, 0x9b, 0xcd, 0x66, 0x88,
0x44, 0x22, 0x83, 0x19, 0x19, 0x19, 0xd6, 0x27, 0x17, 0x2d, 0x0a, 0x6c, 0xdb, 0xb5, 0x3b, 0xbb,
0xae, 0x4b, 0x7f, 0x5c, 0xa9, 0x31, 0x6d, 0x6f, 0xd0, 0x9a, 0xdf, 0x53, 0x75, 0x1b, 0x16, 0xaa,
0x3a, 0xb5, 0xb7, 0xd7, 0x77, 0x77, 0x7f, 0xf7, 0x2f, 0x0e, 0xe0, 0xb1, 0xc7, 0x1e, 0x1b, 0xf2,
0x7a, 0xbd, 0x56, 0x3a, 0xce, 0xa7, 0x38, 0xe6, 0xf3, 0xf9, 0x92, 0xe9, 0x3e, 0x9d, 0xa2, 0x8c,
0xa2, 0x95, 0xc2, 0xc4, 0x18, 0x73, 0x9a, 0x4c, 0xa6, 0x48, 0x43, 0x43, 0x83, 0x78, 0xe0, 0xc0,
0x81, 0xe8, 0x2b, 0xaf, 0xbc, 0x22, 0xec, 0xda, 0x97, 0x28, 0x94, 0x2b, 0x5b, 0xa5, 0x36, 0xad,
0x0e, 0x6d, 0x06, 0x13, 0x6a, 0xbb, 0xcd, 0xa8, 0xd3, 0x58, 0x04, 0xa5, 0xc6, 0x1c, 0x6d, 0xd6,
0x18, 0x85, 0x16, 0x8d, 0x5e, 0x6c, 0x6a, 0xef, 0x16, 0xcb, 0x5b, 0xb5, 0x45, 0xd5, 0x8d, 0xed,
0x37, 0xfe, 0x45, 0x00, 0xf0, 0x9a, 0x7e, 0xf2, 0xc9, 0x27, 0x43, 0x74, 0xec, 0xa0, 0x48, 0x1e,
0x1d, 0x1d, 0x3d, 0x31, 0x79, 0xf2, 0xe4, 0xc8, 0xb4, 0x69, 0xd3, 0x3c, 0x04, 0x4c, 0xb7, 0x6d,
0xdb, 0xb6, 0x1a, 0x8d, 0x46, 0x93, 0x69, 0xb7, 0xdb, 0x2b, 0xba, 0xbb, 0xbb, 0xa3, 0x74, 0x4d,
0x34, 0x10, 0x0c, 0x05, 0xda, 0x74, 0x46, 0xa8, 0x8d, 0xfd, 0xa8, 0xd5, 0xd9, 0x51, 0xd4, 0xe5,
0xc2, 0x81, 0x06, 0x27, 0xb6, 0x9f, 0x36, 0x62, 0x5b, 0x81, 0x96, 0xad, 0x3d, 0xd5, 0x21, 0x6d,
0x2c, 0xb1, 0x38, 0xe3, 0x14, 0x5e, 0x7d, 0x86, 0x6a, 0x78, 0xb8, 0xba, 0xa3, 0x37, 0x5c, 0xd7,
0xa4, 0x62, 0xa7, 0x95, 0x1d, 0xd5, 0x65, 0xd5, 0x0d, 0x3f, 0xff, 0x56, 0x01, 0x50, 0x7d, 0x3f,
0xbb, 0x75, 0xeb, 0x56, 0x1b, 0x1d, 0x1b, 0xf8, 0xea, 0xf3, 0xa0, 0xd2, 0x38, 0x9e, 0x9f, 0x9f,
0x5f, 0xf8, 0xde, 0x7b, 0xef, 0xb5, 0xdc, 0x79, 0xe7, 0x9d, 0xd6, 0xab, 0xaf, 0xbe, 0x3a, 0x32,
0x7d, 0xfa, 0x74, 0xa9, 0xa6, 0xa6, 0x26, 0x38, 0xe0, 0x1c, 0x09, 0xa8, 0x7b, 0x74, 0x68, 0x30,
0xda, 0x59, 0x52, 0x47, 0x88, 0x25, 0xa9, 0x3d, 0xc8, 0xd5, 0x85, 0xa5, 0xb2, 0x3e, 0x26, 0xc9,
0xfb, 0x24, 0xa9, 0x48, 0x1f, 0x60, 0x69, 0xcd, 0x83, 0x6c, 0x47, 0x76, 0x33, 0xfb, 0x60, 0x6f,
0x3e, 0x96, 0x1c, 0x28, 0xf1, 0xae, 0xc9, 0xee, 0xee, 0x4f, 0x6d, 0x1e, 0x1c, 0xad, 0x68, 0xd5,
0x85, 0xca, 0xeb, 0x1a, 0xa5, 0xc2, 0xca, 0xe6, 0xd7, 0xbf, 0x35, 0x00, 0xd4, 0x80, 0x09, 0x55,
0x55, 0x55, 0x16, 0x3a, 0x6e, 0xe2, 0xc9, 0x53, 0x4d, 0x17, 0x5f, 0x7b, 0xed, 0xb5, 0x81, 0xd9,
0xb3, 0x67, 0x5b, 0x97, 0x2e, 0x5d, 0xda, 0x48, 0xf5, 0x9e, 0x6f, 0x30, 0x18, 0xaa, 0x3f, 0xf8,
0xe0, 0x03, 0x61, 0xef, 0xa1, 0xa3, 0x4c, 0xd5, 0xa3, 0x45, 0xb9, 0xd6, 0x29, 0xed, 0xa9, 0x73,
0x48, 0xc7, 0x9a, 0x9c, 0x91, 0x42, 0xa3, 0x10, 0x48, 0x6e, 0x71, 0x0a, 0x5f, 0x56, 0xf7, 0xb1,
0x8c, 0x0e, 0x4f, 0xa4, 0xd4, 0xcc, 0x42, 0x55, 0x36, 0x08, 0x8a, 0x41, 0xb0, 0x1a, 0xab, 0xc4,
0x4e, 0xb5, 0xbb, 0xd9, 0xe1, 0x6a, 0x93, 0xb4, 0x29, 0x43, 0x19, 0x5e, 0x95, 0x54, 0x27, 0x65,
0xd5, 0x6b, 0xa4, 0x92, 0xf2, 0x5a, 0xb6, 0xe1, 0xf3, 0x7d, 0x5f, 0x3c, 0xf0, 0xc0, 0x03, 0xd3,
0xbf, 0x31, 0x00, 0xa2, 0xc5, 0xcb, 0x88, 0x49, 0x5e, 0xa2, 0xd8, 0x7a, 0x26, 0xe6, 0xce, 0x9d,
0xbb, 0x95, 0x68, 0xd3, 0xb5, 0x73, 0xe7, 0x4e, 0x4f, 0x5c, 0x5c, 0x9c, 0x69, 0xcb, 0x96, 0x2d,
0x9d, 0x54, 0x36, 0xae, 0x9f, 0xfc, 0xe4, 0x27, 0x98, 0x31, 0x63, 0x06, 0x7e, 0xfa, 0xd3, 0x9f,
0xb2, 0x9f, 0xfd, 0xec, 0x67, 0xd2, 0xcc, 0x99, 0x33, 0x59, 0x4a, 0xc6, 0x49, 0x51, 0xa9, 0xee,
0xc4, 0x49, 0xd5, 0x00, 0xdb, 0x53, 0x37, 0x2c, 0xae, 0x4f, 0x53, 0x60, 0xe5, 0x57, 0x72, 0x6c,
0xcb, 0x51, 0xb3, 0x3d, 0xa5, 0xda, 0xe8, 0xda, 0x13, 0x35, 0xd2, 0xe6, 0x4c, 0x25, 0xdb, 0x9d,
0xa7, 0x66, 0x07, 0xcb, 0xf5, 0x91, 0xc3, 0x15, 0x86, 0x48, 0x52, 0x8d, 0x41, 0x3c, 0x52, 0xa1,
0x65, 0xfb, 0x4a, 0xba, 0xd8, 0xe1, 0x4a, 0x03, 0xca, 0x7a, 0xc3, 0x12, 0x95, 0x54, 0xb8, 0xb8,
0x59, 0x2f, 0xe5, 0x16, 0x57, 0x62, 0xf1, 0x5b, 0xef, 0x86, 0x29, 0x87, 0x81, 0x39, 0x73, 0xe6,
0x3c, 0xf6, 0x27, 0x01, 0x50, 0xa2, 0x2f, 0x2e, 0x5e, 0xbc, 0xd8, 0x79, 0xfa, 0xf4, 0x69, 0x6b,
0x69, 0x69, 0xa9, 0x95, 0xdf, 0x53, 0x0c, 0x9c, 0x3a, 0x75, 0x8a, 0xd1, 0x0e, 0x88, 0x15, 0x15,
0x15, 0xc1, 0xf2, 0xf2, 0xf2, 0x00, 0x51, 0xa4, 0x74, 0xe2, 0xc4, 0x09, 0x9c, 0x1b, 0x29, 0xa9,
0xa9, 0xa8, 0x6b, 0x56, 0xa1, 0xaa, 0xab, 0x0f, 0x7b, 0x1b, 0xc6, 0x70, 0xb4, 0xde, 0x86, 0x13,
0x8d, 0x03, 0x38, 0x5c, 0xdb, 0x8f, 0xa3, 0x75, 0x16, 0x24, 0x2b, 0x07, 0x70, 0xa2, 0xc1, 0x8a,
0xa4, 0x5a, 0x23, 0x52, 0xeb, 0xcd, 0x38, 0xd9, 0x64, 0x61, 0xa7, 0x9a, 0xad, 0x52, 0x56, 0x93,
0x45, 0xca, 0x57, 0x0f, 0x48, 0x69, 0x4a, 0x0b, 0xfb, 0x3c, 0xa3, 0x0e, 0x5f, 0x55, 0x52, 0xe2,
0xed, 0xc3, 0x52, 0xa6, 0xca, 0x11, 0x2d, 0x69, 0xd4, 0xb0, 0x53, 0xf9, 0x72, 0xa6, 0x52, 0xb5,
0x59, 0x69, 0x31, 0xbb, 0xfe, 0x24, 0x00, 0xbe, 0xe2, 0x3c, 0x69, 0x3a, 0xe9, 0xa3, 0xd0, 0xf0,
0x08, 0x06, 0x83, 0x96, 0xe1, 0xe1, 0x61, 0x91, 0x37, 0x26, 0xc5, 0x18, 0x31, 0x8d, 0x47, 0xab,
0xd5, 0x82, 0x9a, 0xf6, 0xbc, 0xa8, 0x56, 0x28, 0x51, 0xdb, 0xac, 0x46, 0x6e, 0x8f, 0x17, 0x29,
0x9d, 0x41, 0x56, 0xa0, 0x0d, 0xa0, 0xdc, 0x1c, 0x45, 0xa1, 0x3e, 0x8c, 0xdc, 0x2e, 0x0f, 0x2a,
0x4c, 0x21, 0x54, 0xf7, 0x85, 0x51, 0x61, 0xf0, 0xb1, 0x6a, 0x93, 0x1f, 0x4d, 0x83, 0x22, 0x53,
0x39, 0x20, 0x29, 0x6d, 0x02, 0x6b, 0x77, 0x8a, 0xac, 0xca, 0xe8, 0x65, 0xa7, 0x9a, 0xfa, 0x58,
0x62, 0x91, 0x5a, 0xac, 0x1f, 0x64, 0x62, 0x45, 0x6f, 0x50, 0x48, 0x56, 0x98, 0x59, 0xbe, 0xbc,
0x1e, 0xc5, 0x15, 0x0d, 0x01, 0xca, 0xad, 0xf2, 0xcf, 0x01, 0xc0, 0x93, 0xef, 0xe8, 0xeb, 0xeb,
0x33, 0xd2, 0x8a, 0x7b, 0xa9, 0x31, 0xc5, 0xa6, 0xa6, 0xa6, 0x28, 0x45, 0xa0, 0xb6, 0xb6, 0x36,
0x4c, 0x3b, 0x81, 0x8e, 0x8e, 0x8e, 0xb3, 0x41, 0x3a, 0x00, 0x6a, 0x3c, 0x54, 0xb4, 0x9b, 0x71,
0xa2, 0x47, 0x62, 0x47, 0x95, 0x76, 0x14, 0xeb, 0x02, 0xa8, 0x30, 0x47, 0x70, 0xda, 0x10, 0x46,
0x89, 0x76, 0x0c, 0xe5, 0x7a, 0x2f, 0x14, 0x96, 0x30, 0xaa, 0x0c, 0x1e, 0x56, 0xda, 0xed, 0x84,
0xd2, 0x1a, 0x82, 0xda, 0x09, 0xb1, 0x65, 0x50, 0x94, 0xda, 0x06, 0x23, 0x28, 0xa3, 0xff, 0xe5,
0xb5, 0x5a, 0xa4, 0x7d, 0x39, 0x8a, 0x70, 0x93, 0x1d, 0x9e, 0xe6, 0x21, 0x84, 0xeb, 0xad, 0x82,
0x50, 0xa8, 0xe8, 0xc2, 0xf1, 0xb4, 0x3c, 0x3c, 0xf8, 0xe0, 0x83, 0x4d, 0x14, 0xff, 0x74, 0x51,
0x00, 0xbc, 0xde, 0xcf, 0x05, 0xd0, 0xda, 0xda, 0x6a, 0x49, 0x4d, 0x4d, 0x15, 0xa8, 0x84, 0x24,
0x52, 0x5f, 0x7e, 0x1f, 0x49, 0x49, 0x49, 0x11, 0xb7, 0x6f, 0xdf, 0x8e, 0xbc, 0xbc, 0xbc, 0x58,
0xf2, 0xed, 0xed, 0xed, 0xd8, 0x19, 0xb7, 0x0b, 0x65, 0x55, 0x0a, 0x14, 0x76, 0x39, 0x91, 0x63,
0x90, 0x58, 0x7c, 0x51, 0x37, 0x0e, 0x55, 0x1a, 0x51, 0xd3, 0x1f, 0x41, 0xa5, 0x39, 0x44, 0xff,
0x77, 0xa1, 0xd2, 0xe8, 0x43, 0x7d, 0x7f, 0x08, 0xa9, 0x35, 0x3d, 0x28, 0x69, 0x1f, 0x40, 0x8d,
0x61, 0x2c, 0x06, 0xa0, 0xcd, 0xc9, 0xc4, 0x56, 0x9b, 0x1f, 0xd5, 0xba, 0x11, 0x56, 0xa4, 0xb6,
0x48, 0x5b, 0x8f, 0x15, 0xb0, 0x46, 0x6b, 0x78, 0xac, 0xd5, 0x81, 0xb1, 0x96, 0x21, 0xf8, 0xca,
0x34, 0x2e, 0xea, 0xad, 0x7c, 0xec, 0xda, 0xbd, 0xd7, 0x4d, 0x0b, 0xec, 0xa7, 0x1c, 0x37, 0x91,
0x3d, 0x99, 0xf2, 0x8d, 0x00, 0x48, 0x92, 0xd4, 0x59, 0x57, 0x57, 0xc7, 0xa8, 0x64, 0xc4, 0x9e,
0x9e, 0x9e, 0x00, 0x95, 0x8a, 0xaf, 0xb9, 0xb9, 0x59, 0x54, 0x28, 0x14, 0x38, 0x17, 0x44, 0x61,
0x51, 0x09, 0x8a, 0xe5, 0xd5, 0xc8, 0x69, 0xb3, 0x23, 0xbb, 0x27, 0x84, 0x74, 0x95, 0x0b, 0x09,
0x65, 0x1a, 0xa4, 0x29, 0x8c, 0xa8, 0xb7, 0x84, 0x90, 0xdf, 0x36, 0x84, 0x1a, 0x53, 0x20, 0x06,
0xe0, 0x58, 0x59, 0x3b, 0xcb, 0x69, 0x34, 0x41, 0x61, 0xf6, 0xb1, 0x8e, 0x61, 0x88, 0x9a, 0x51,
0x88, 0x8d, 0x66, 0x0f, 0x94, 0x66, 0x2f, 0x2b, 0x6b, 0xb7, 0x4a, 0x7b, 0xd2, 0x4a, 0xa5, 0xaa,
0x1e, 0x47, 0xb0, 0x67, 0x04, 0xa3, 0x6d, 0x4e, 0xf8, 0x94, 0xfd, 0x01, 0x31, 0x2d, 0xaf, 0x12,
0xd9, 0x05, 0x95, 0xc1, 0x40, 0x20, 0x60, 0x23, 0x81, 0xec, 0x27, 0x00, 0x63, 0xd4, 0xd4, 0x4b,
0x7f, 0xfd, 0xeb, 0x5f, 0xff, 0xc3, 0x45, 0x01, 0x50, 0xb2, 0x76, 0x62, 0x9d, 0x58, 0xb2, 0x14,
0x8c, 0x07, 0x3f, 0xa7, 0x06, 0xc7, 0xb9, 0x20, 0x0a, 0x0a, 0x8b, 0x91, 0x5f, 0x5c, 0x81, 0x53,
0x2a, 0x3b, 0x0e, 0xd5, 0xf4, 0x23, 0x87, 0x6a, 0xbe, 0xc4, 0x10, 0x44, 0x62, 0x51, 0x2b, 0x32,
0x6b, 0xb5, 0xa8, 0xd4, 0xb9, 0x28, 0xf9, 0x20, 0x94, 0x04, 0xe6, 0xb8, 0x9c, 0x00, 0x28, 0x8d,
0x68, 0x1b, 0x12, 0x24, 0x9d, 0x1b, 0xa2, 0x81, 0xa2, 0xc9, 0x34, 0x8a, 0x8e, 0xc1, 0x20, 0xab,
0xe9, 0x19, 0x90, 0x92, 0x8a, 0x14, 0x51, 0xb9, 0xaa, 0x57, 0x30, 0xba, 0xe1, 0xa6, 0xc7, 0x02,
0xaa, 0x81, 0x80, 0x90, 0x56, 0x50, 0xc5, 0xbe, 0x3c, 0x92, 0x19, 0xa6, 0x9c, 0x8a, 0xb9, 0xe2,
0x8f, 0x8d, 0x8d, 0x59, 0x28, 0x0f, 0x2b, 0xe5, 0xeb, 0xb8, 0xff, 0xfe, 0xfb, 0x5f, 0x23, 0x20,
0x97, 0x8f, 0x0b, 0x80, 0x56, 0xdf, 0x4d, 0x02, 0x86, 0x8d, 0x1b, 0x37, 0x9e, 0x17, 0x9b, 0x37,
0x6f, 0x8e, 0x81, 0x20, 0x66, 0xc2, 0x8e, 0x1d, 0x3b, 0x90, 0x9b, 0x57, 0x88, 0xdc, 0x42, 0x39,
0xf2, 0x7a, 0x3c, 0xd8, 0x99, 0xa3, 0x46, 0x3e, 0x35, 0x72, 0xb9, 0x89, 0xea, 0xdd, 0xe8, 0x47,
0xfc, 0xa9, 0x3a, 0x94, 0x76, 0xda, 0xd1, 0x66, 0x0f, 0xa3, 0x6b, 0x58, 0x94, 0xb2, 0xea, 0xba,
0x21, 0xef, 0xb0, 0xa0, 0x77, 0x0c, 0xa2, 0xc9, 0x0b, 0x91, 0x12, 0x15, 0x9b, 0x8d, 0xc3, 0x30,
0x8e, 0x08, 0xac, 0x51, 0x6f, 0x97, 0x72, 0xaa, 0x55, 0x91, 0xb2, 0x56, 0x1d, 0x7a, 0xdd, 0xa2,
0xa7, 0xcf, 0x8b, 0x70, 0x83, 0xc1, 0x29, 0x64, 0xe4, 0x57, 0x4b, 0xbb, 0xf7, 0x1c, 0x15, 0x89,
0xed, 0x4e, 0x53, 0x5e, 0xc7, 0x29, 0xe4, 0xdc, 0x8b, 0x39, 0x1c, 0x8e, 0xfe, 0xe5, 0xcb, 0x97,
0x0f, 0x52, 0xde, 0xe6, 0x7f, 0xa7, 0xdb, 0x05, 0x00, 0xaa, 0xab, 0xab, 0x83, 0x64, 0x13, 0x2e,
0x00, 0xc0, 0x83, 0x74, 0x01, 0x4a, 0xa5, 0x32, 0xb6, 0x0b, 0x39, 0xb9, 0xf9, 0x38, 0x99, 0x5d,
0x82, 0xfc, 0xce, 0x61, 0xec, 0xca, 0x53, 0x21, 0xbb, 0xdd, 0x85, 0x12, 0x8d, 0x07, 0x95, 0x06,
0x2f, 0xf6, 0xe7, 0x36, 0xa0, 0xa4, 0xc3, 0x8e, 0x26, 0x6a, 0xda, 0xce, 0x61, 0x26, 0xa6, 0x57,
0xb6, 0xa1, 0xb2, 0xd3, 0x1a, 0x03, 0x60, 0xa6, 0x30, 0xb8, 0x22, 0xac, 0xc3, 0x32, 0x0a, 0x9b,
0x0f, 0x92, 0xba, 0xd7, 0x21, 0x9d, 0x6e, 0xe8, 0x8c, 0x34, 0x6a, 0x2c, 0xa2, 0x6e, 0xc8, 0x17,
0x1c, 0xf4, 0x23, 0x2a, 0x6f, 0xd1, 0x8b, 0xe9, 0xb9, 0x15, 0xd2, 0x96, 0x6d, 0xfb, 0xc1, 0x05,
0xf3, 0x8c, 0x13, 0xf8, 0x03, 0x90, 0x2a, 0x0a, 0x1b, 0xd9, 0x17, 0x13, 0x95, 0x95, 0x43, 0x46,
0x7f, 0xce, 0x03, 0x20, 0x97, 0xcb, 0xa5, 0x89, 0x00, 0xf0, 0x95, 0x3f, 0x03, 0x80, 0x5e, 0x18,
0xe9, 0x59, 0x85, 0x28, 0x68, 0xd0, 0x60, 0x7f, 0x99, 0x0e, 0xc5, 0x5a, 0x2f, 0x4a, 0xb5, 0x1e,
0x94, 0x76, 0x0f, 0x23, 0x21, 0xb7, 0x1e, 0x85, 0x2a, 0x0b, 0xea, 0x8c, 0x63, 0xac, 0xc5, 0xe2,
0x47, 0x56, 0x75, 0x3b, 0x1a, 0x74, 0x43, 0xac, 0x9f, 0x56, 0xdf, 0xea, 0x87, 0xa4, 0x1f, 0xf2,
0xc3, 0xe0, 0xf0, 0x61, 0x28, 0x00, 0xa9, 0xdb, 0x32, 0xcc, 0xaa, 0x5a, 0xba, 0x85, 0x66, 0x6d,
0x3f, 0xb3, 0xfb, 0x25, 0xff, 0x70, 0x10, 0x62, 0x5e, 0x55, 0x13, 0x3b, 0x91, 0x59, 0xcc, 0xd6,
0x6e, 0xd8, 0x1d, 0x3d, 0x27, 0xf9, 0x73, 0xa3, 0x81, 0x5c, 0x00, 0xef, 0x8b, 0xee, 0xf3, 0x00,
0x44, 0xa3, 0x51, 0x0d, 0xd1, 0x25, 0xfb, 0x26, 0x00, 0xea, 0xeb, 0xeb, 0x91, 0x71, 0x32, 0x07,
0x99, 0x05, 0x15, 0x48, 0x6a, 0xb0, 0xa1, 0x54, 0xef, 0x8f, 0x71, 0x7e, 0x6d, 0xaf, 0x17, 0x89,
0x79, 0xf5, 0xa8, 0xe8, 0x71, 0x80, 0x37, 0x2a, 0xaf, 0xf5, 0xbc, 0xda, 0x0e, 0xd4, 0xf7, 0x58,
0xa1, 0xb5, 0xfb, 0x98, 0xc9, 0x15, 0x62, 0x46, 0x87, 0x17, 0xd6, 0xb1, 0x30, 0xa3, 0x64, 0x25,
0xfd, 0xe0, 0x08, 0xab, 0x6e, 0xee, 0x64, 0x66, 0x87, 0x27, 0x32, 0x12, 0x46, 0x70, 0xc8, 0x17,
0x15, 0xe5, 0xca, 0x0e, 0xe9, 0xe0, 0x91, 0x0c, 0x24, 0x24, 0x26, 0xf5, 0x8f, 0x93, 0x7c, 0x2a,
0xe9, 0x92, 0xfd, 0xe5, 0x97, 0x5f, 0x76, 0x51, 0x05, 0x2d, 0x3a, 0x0f, 0x80, 0xc7, 0xe3, 0xb1,
0x50, 0x0f, 0x88, 0xdf, 0x04, 0x00, 0xa7, 0xd2, 0xc2, 0xc2, 0x22, 0x1c, 0xfe, 0x2a, 0x1d, 0xd9,
0x0a, 0x3d, 0xca, 0x8d, 0x41, 0xd4, 0x10, 0x00, 0xce, 0xed, 0x5f, 0xe6, 0xd7, 0x43, 0x61, 0x70,
0xb3, 0xae, 0x21, 0xea, 0x81, 0xc1, 0x00, 0x8a, 0x1b, 0xba, 0xd0, 0x66, 0x72, 0xa2, 0x77, 0x38,
0x00, 0x93, 0xd3, 0x87, 0xde, 0xa1, 0x31, 0x58, 0x47, 0x03, 0x6c, 0x34, 0xc4, 0x24, 0xd3, 0xd0,
0x28, 0xab, 0x6f, 0xeb, 0xc6, 0x68, 0x84, 0x05, 0xdd, 0x11, 0x44, 0xac, 0x23, 0x5e, 0x31, 0xb7,
0xa4, 0x86, 0xad, 0x5b, 0xb7, 0x9b, 0xc4, 0xd2, 0x58, 0x30, 0x0e, 0x80, 0x26, 0x2a, 0x9f, 0x3e,
0xf2, 0x4b, 0x9d, 0xb1, 0x26, 0x3e, 0x17, 0x00, 0x35, 0xc8, 0x08, 0x09, 0xd7, 0x37, 0x02, 0xc0,
0xa9, 0xb4, 0xa5, 0xa5, 0x05, 0xc7, 0x92, 0x4e, 0x22, 0x25, 0xbb, 0x8c, 0xca, 0x67, 0x0c, 0xb5,
0x7d, 0xa1, 0x58, 0x09, 0x1d, 0x22, 0x00, 0x8d, 0xbd, 0x6e, 0x74, 0x0f, 0x91, 0x70, 0xf5, 0x8d,
0x40, 0xde, 0x4c, 0xca, 0x3d, 0xe0, 0x66, 0x83, 0x5e, 0x81, 0xd9, 0xdc, 0x21, 0xf4, 0x0f, 0x7b,
0x31, 0x30, 0x1a, 0xc0, 0xb0, 0x3f, 0xca, 0xfa, 0x9d, 0x6e, 0x74, 0xe8, 0xcd, 0x92, 0x57, 0x40,
0x90, 0x42, 0xd4, 0xf6, 0x0f, 0x48, 0xfb, 0x12, 0x92, 0xb1, 0x79, 0xcb, 0xbe, 0xc0, 0x38, 0xc9,
0xa7, 0xf3, 0xd5, 0xff, 0xed, 0x6f, 0x7f, 0xeb, 0xbe, 0xef, 0xbe, 0xfb, 0x1e, 0xb9, 0x00, 0x80,
0xc5, 0x62, 0x09, 0x93, 0x90, 0x4d, 0x08, 0xe0, 0xf3, 0xcf, 0x3f, 0xc7, 0xc1, 0x83, 0x07, 0xcf,
0x9e, 0xd3, 0x44, 0x86, 0xf7, 0xdf, 0xff, 0x00, 0xf1, 0x7b, 0x8e, 0xe0, 0x44, 0x4e, 0x39, 0x52,
0x6b, 0xf5, 0x38, 0x54, 0xd4, 0x82, 0xc3, 0x05, 0xf5, 0x38, 0x5e, 0xa4, 0x40, 0x46, 0x59, 0x23,
0x72, 0xaa, 0x5b, 0x50, 0xac, 0x68, 0x83, 0xa2, 0x4d, 0x0f, 0xd3, 0x90, 0x07, 0x16, 0x4a, 0x9e,
0x56, 0x19, 0x0e, 0x6f, 0x08, 0x2e, 0x7f, 0x18, 0x03, 0x23, 0x1e, 0x18, 0x6d, 0x76, 0xd1, 0x2f,
0x22, 0xec, 0x13, 0x20, 0xe5, 0x14, 0x56, 0x60, 0xe5, 0x8a, 0xcf, 0xd1, 0xd8, 0xd8, 0x7a, 0x7a,
0x1c, 0x00, 0xad, 0x44, 0xf3, 0xbc, 0xf6, 0x95, 0x67, 0x75, 0x80, 0x03, 0xa0, 0x86, 0xb4, 0x12,
0x32, 0x9d, 0xd9, 0x6c, 0x66, 0x6d, 0x6d, 0x6d, 0xd2, 0xba, 0x75, 0xeb, 0xd8, 0x6f, 0x7e, 0xf3,
0x1b, 0x90, 0x0a, 0x82, 0xf8, 0x16, 0x77, 0xdd, 0x75, 0x17, 0xee, 0xb8, 0xe3, 0x0e, 0xd0, 0xe8,
0x08, 0xae, 0x09, 0x2b, 0x57, 0xae, 0x8c, 0x95, 0x10, 0xf9, 0x25, 0xe8, 0x74, 0x3a, 0x2c, 0x59,
0xf2, 0x11, 0xf6, 0x25, 0x24, 0x21, 0xb3, 0x58, 0x81, 0x6a, 0x83, 0x07, 0x19, 0xd5, 0x9d, 0xb4,
0x03, 0x2e, 0xe8, 0x1c, 0x41, 0xd6, 0xd1, 0xe7, 0x42, 0x8d, 0x5a, 0x0b, 0xb5, 0xde, 0x8a, 0xe6,
0x6e, 0x63, 0x2c, 0x79, 0xbb, 0xdb, 0x8f, 0x91, 0x60, 0x94, 0x8d, 0x06, 0x23, 0x18, 0x72, 0x7b,
0xd1, 0x3b, 0x60, 0x67, 0xbe, 0x88, 0x28, 0x94, 0x56, 0x2a, 0xb1, 0x66, 0x75, 0x1c, 0xe2, 0xe3,
0x0f, 0xe9, 0xc7, 0x49, 0x3e, 0x93, 0x44, 0x76, 0x88, 0x86, 0x2c, 0xcf, 0xaf, 0xe8, 0x76, 0x16,
0x00, 0xd5, 0x52, 0x0c, 0x00, 0x37, 0x70, 0xfd, 0xfd, 0xfd, 0x51, 0xb2, 0x0f, 0x91, 0x6b, 0xae,
0xb9, 0x86, 0xc9, 0x68, 0x54, 0xf8, 0x7a, 0x5c, 0x72, 0xc9, 0x25, 0xa0, 0xad, 0x8b, 0x1d, 0xd3,
0xb0, 0x0f, 0xab, 0xd5, 0x0a, 0xb2, 0x1d, 0xa0, 0x99, 0x00, 0xfb, 0xf7, 0x27, 0x92, 0xf4, 0x1f,
0x41, 0x4a, 0x4e, 0x05, 0xb2, 0x89, 0x75, 0x2a, 0x3a, 0xfb, 0x39, 0xeb, 0x48, 0x3a, 0xbb, 0x87,
0x55, 0x36, 0x77, 0xa1, 0xa5, 0xc7, 0x84, 0x4e, 0xa3, 0x05, 0xe6, 0xa1, 0x11, 0x0c, 0xfb, 0xf8,
0xea, 0x87, 0xe0, 0x0e, 0x45, 0x31, 0xe2, 0x0f, 0x32, 0x93, 0xd5, 0xce, 0xd2, 0x4f, 0x16, 0x63,
0xc5, 0xf2, 0x6d, 0x58, 0xb4, 0xe8, 0xb9, 0x08, 0x1f, 0x9c, 0xc6, 0x01, 0xd0, 0x46, 0xfd, 0xc9,
0x6b, 0xbf, 0xfc, 0x3c, 0x25, 0x3e, 0x03, 0x80, 0xea, 0x7f, 0x90, 0x06, 0x72, 0x3f, 0x95, 0x88,
0xff, 0xaa, 0xab, 0xae, 0x1a, 0x17, 0xc0, 0xa5, 0x97, 0x5e, 0x0a, 0x0e, 0x9e, 0x1f, 0x7f, 0xf8,
0xe1, 0x87, 0xa0, 0x81, 0x1f, 0x34, 0x9d, 0xc5, 0x80, 0xbd, 0xfe, 0xfa, 0xeb, 0x44, 0xad, 0xa5,
0x6c, 0xef, 0xde, 0xaf, 0xd8, 0xa6, 0x4d, 0x7b, 0x90, 0x94, 0x59, 0x02, 0x45, 0x67, 0x1f, 0x33,
0x38, 0xfd, 0x4c, 0xd1, 0xa6, 0x43, 0xab, 0xd6, 0x04, 0xad, 0x65, 0x08, 0x36, 0x97, 0x07, 0x63,
0x61, 0x91, 0x39, 0xbd, 0x7e, 0x98, 0x07, 0x9d, 0xa8, 0x52, 0xb4, 0x20, 0xf1, 0xc0, 0x09, 0xac,
0xfa, 0x74, 0x3b, 0x8e, 0x1e, 0xcf, 0xc0, 0x33, 0xcf, 0x3c, 0xef, 0x1d, 0x27, 0xf9, 0x2c, 0x51,
0x14, 0xed, 0x34, 0x93, 0xf8, 0x69, 0x01, 0x67, 0x8e, 0x0b, 0x80, 0x56, 0xdf, 0xe7, 0xa7, 0x1b,
0xf9, 0x8e, 0xb1, 0x8b, 0x01, 0xe0, 0x25, 0xc5, 0x8f, 0xdf, 0x7d, 0xf7, 0x5d, 0x1c, 0x3b, 0x76,
0x0c, 0x6f, 0xbc, 0xf1, 0x46, 0xec, 0x9c, 0x68, 0x0d, 0x54, 0x9f, 0x91, 0xf5, 0xeb, 0xd7, 0x0b,
0x3f, 0xfe, 0xf1, 0x4d, 0xf8, 0x78, 0xe9, 0x1a, 0xb6, 0x76, 0xcd, 0x2e, 0x1c, 0x3e, 0x9e, 0x8d,
0xa3, 0x29, 0x05, 0x48, 0xcf, 0x2e, 0x45, 0x5e, 0x71, 0x0d, 0x4a, 0xab, 0x9b, 0x50, 0x78, 0xba,
0x16, 0x07, 0x8f, 0xa4, 0xc7, 0x92, 0x5e, 0xbe, 0x6c, 0x33, 0xf6, 0xee, 0x3b, 0x86, 0xfa, 0x46,
0x15, 0x4e, 0xcb, 0x6b, 0xb0, 0xf2, 0xd3, 0x8d, 0xac, 0xb3, 0xb3, 0x33, 0xeb, 0x6b, 0x00, 0xba,
0xc8, 0xfd, 0xf6, 0xd1, 0x7b, 0xe7, 0x5d, 0x60, 0xe6, 0x38, 0x80, 0xe2, 0xe2, 0x62, 0x9b, 0x5e,
0xaf, 0xa7, 0x12, 0x93, 0x82, 0x09, 0x09, 0x09, 0xae, 0x8b, 0x01, 0xd8, 0xb4, 0x69, 0x53, 0xac,
0x37, 0x78, 0xf2, 0x3c, 0x72, 0x73, 0x73, 0xf1, 0xfc, 0xf3, 0xcf, 0x23, 0x2d, 0x2d, 0x8d, 0xf1,
0x73, 0x22, 0x04, 0xbc, 0xf8, 0xe2, 0x8b, 0x02, 0x9d, 0x87, 0xb2, 0xb3, 0x73, 0x23, 0xa9, 0x29,
0xd9, 0xd1, 0xf7, 0xdf, 0x5f, 0x29, 0x6d, 0x58, 0x1f, 0x27, 0x2d, 0x59, 0xb2, 0x9a, 0xad, 0xf8,
0x64, 0x2b, 0x5b, 0xb3, 0x7a, 0x27, 0xb6, 0x6e, 0x89, 0x87, 0xba, 0x5b, 0x87, 0x01, 0x17, 0x79,
0x22, 0x8d, 0x11, 0xb9, 0x45, 0xe5, 0x48, 0x3c, 0x98, 0x8c, 0x6b, 0xae, 0x99, 0xc2, 0xf8, 0x07,
0x08, 0xe7, 0x24, 0x9f, 0x23, 0x08, 0x82, 0x9d, 0xbb, 0x52, 0xea, 0xc5, 0x9f, 0x8f, 0x0b, 0xa0,
0xb0, 0xb0, 0xd0, 0x41, 0x73, 0x00, 0x1f, 0x60, 0x82, 0xfb, 0xf7, 0xef, 0x77, 0x4c, 0x9e, 0x3c,
0x19, 0x13, 0x01, 0x38, 0x7e, 0xfc, 0x38, 0xc8, 0x62, 0x23, 0x29, 0x29, 0x29, 0x06, 0x80, 0x38,
0x19, 0x46, 0xa3, 0x11, 0x34, 0xec, 0xc7, 0x00, 0x34, 0x34, 0x34, 0x80, 0x16, 0xc2, 0x47, 0x64,
0x10, 0x4e, 0x4c, 0x4c, 0x04, 0xcd, 0x16, 0x51, 0xea, 0x15, 0x1f, 0x5d, 0xe3, 0x27, 0x13, 0x26,
0x12, 0x73, 0x45, 0xb2, 0xb2, 0xb2, 0x84, 0xc2, 0xc2, 0xe2, 0x68, 0xa3, 0xaa, 0x8b, 0x4a, 0xa8,
0x19, 0xca, 0xb6, 0x0e, 0xa8, 0x7b, 0x34, 0x31, 0x6f, 0xf5, 0xd4, 0x7f, 0xbc, 0xe0, 0xff, 0xef,
0xc4, 0xa5, 0x63, 0x52, 0x64, 0x8c, 0x03, 0xd1, 0xe4, 0xe4, 0xe4, 0xf4, 0xd1, 0x73, 0x53, 0xc6,
0xb5, 0xd3, 0xb4, 0x2d, 0x5b, 0xc9, 0x5d, 0xba, 0x47, 0x46, 0x46, 0x22, 0x7c, 0xfa, 0xda, 0xbb,
0x77, 0xaf, 0x9b, 0x76, 0x60, 0x42, 0x00, 0x3c, 0x71, 0x1a, 0x2f, 0x41, 0x43, 0x3e, 0x0a, 0x0a,
0x0a, 0xd0, 0xdb, 0xdb, 0x1b, 0x03, 0xc0, 0x47, 0x4c, 0x0e, 0x80, 0x92, 0xe5, 0xaf, 0xe3, 0xa5,
0x5d, 0x15, 0xf9, 0x39, 0xe9, 0x06, 0xe3, 0xe7, 0xd4, 0x2f, 0x91, 0x3b, 0xef, 0xbc, 0x13, 0xc4,
0x70, 0x02, 0x11, 0x85, 0x44, 0x00, 0x83, 0xa7, 0x4b, 0x2b, 0x84, 0xaf, 0xbe, 0x3a, 0x2e, 0x66,
0x9c, 0xca, 0x87, 0xd6, 0x6c, 0xc6, 0xa9, 0xdc, 0x92, 0x18, 0x9b, 0x1d, 0xdd, 0xfe, 0xb6, 0xd0,
0x1e, 0xff, 0xc3, 0x80, 0x35, 0x6b, 0xee, 0x40, 0x38, 0x1c, 0x1e, 0xa4, 0x45, 0x0e, 0x90, 0xea,
0xde, 0x38, 0x21, 0x00, 0x7a, 0xc1, 0x60, 0x28, 0x14, 0xe2, 0x6f, 0xec, 0xd8, 0xbd, 0x7b, 0xb7,
0x70, 0xb1, 0x1d, 0xa0, 0xc4, 0x59, 0x51, 0x51, 0x91, 0xc8, 0x77, 0x82, 0x97, 0x0b, 0xe9, 0x06,
0xeb, 0xea, 0xea, 0x92, 0x68, 0x55, 0xb9, 0x5b, 0x95, 0x78, 0xb2, 0x3e, 0xba, 0xd1, 0x10, 0x14,
0x03, 0x64, 0x32, 0x99, 0x04, 0x7e, 0xce, 0x01, 0x9d, 0x01, 0x40, 0x60, 0x19, 0x95, 0x85, 0xd7,
0xed, 0x76, 0x87, 0x69, 0x87, 0x84, 0x55, 0x9f, 0x6e, 0x90, 0x72, 0x0a, 0xe4, 0x50, 0x57, 0x1d,
0x46, 0x53, 0xfc, 0x2f, 0x60, 0x3e, 0xf0, 0x7d, 0xb8, 0x29, 0xcc, 0xdb, 0x64, 0x28, 0x38, 0xfc,
0x91, 0x83, 0x1a, 0xf7, 0xcb, 0x09, 0x27, 0x32, 0x0e, 0x20, 0x33, 0x93, 0x53, 0xac, 0x14, 0x21,
0x2d, 0xb0, 0xc5, 0xc5, 0xc5, 0x61, 0xa2, 0x1d, 0xb8, 0xec, 0xb2, 0xcb, 0xf0, 0xe9, 0xa7, 0x9f,
0x32, 0xce, 0x3a, 0xab, 0x57, 0xaf, 0x66, 0xa4, 0xc4, 0x51, 0xa2, 0x53, 0xe9, 0x8f, 0x2c, 0x54,
0xc2, 0x88, 0x56, 0xa3, 0x57, 0x5c, 0x71, 0x05, 0x9e, 0x7e, 0xfa, 0x69, 0x50, 0xd2, 0x7c, 0x77,
0x02, 0x53, 0xa6, 0x4c, 0x61, 0x9c, 0xbd, 0x38, 0x00, 0x7a, 0x9e, 0x44, 0xd7, 0xf1, 0x72, 0xe5,
0x6c, 0x13, 0x22, 0x4f, 0x25, 0x1c, 0xdc, 0xf1, 0x31, 0x53, 0x7d, 0x79, 0x2f, 0x74, 0x69, 0x4f,
0x20, 0xd4, 0xb5, 0x8d, 0xe4, 0xea, 0x19, 0x84, 0xb3, 0xff, 0x0d, 0xa3, 0xf1, 0x93, 0x51, 0xb7,
0xee, 0x4a, 0xf6, 0xfa, 0x93, 0x37, 0x4f, 0xf8, 0x61, 0xb1, 0x8c, 0xb6, 0x26, 0xe1, 0xe4, 0xc9,
0x93, 0x7c, 0x9b, 0x05, 0x8a, 0xde, 0x2f, 0xbe, 0xf8, 0x22, 0x74, 0x31, 0x00, 0x34, 0xa3, 0xc6,
0x1a, 0x7c, 0xe9, 0xd2, 0xa5, 0xcc, 0xe9, 0x74, 0x52, 0x83, 0xbe, 0x1f, 0x7b, 0xec, 0xd1, 0x47,
0x1f, 0xe5, 0x2c, 0x24, 0x2c, 0x59, 0xb2, 0x24, 0x76, 0x7e, 0xeb, 0xad, 0xb7, 0xf2, 0x1d, 0xe2,
0x65, 0x14, 0xe1, 0xe7, 0x37, 0xdc, 0x70, 0x43, 0x4c, 0x10, 0xdf, 0x7a, 0xeb, 0x2d, 0x46, 0x4e,
0x32, 0x44, 0xa5, 0x11, 0x20, 0xd2, 0x13, 0xab, 0x8a, 0xd3, 0xc5, 0xca, 0xcf, 0xae, 0x80, 0xab,
0xee, 0x6d, 0x88, 0x3e, 0x23, 0xe0, 0xe9, 0x00, 0x0c, 0x9b, 0x21, 0xd5, 0x3c, 0x8c, 0x40, 0xf2,
0x4d, 0xb0, 0x6e, 0x96, 0xa1, 0x6d, 0xb3, 0x6c, 0xcb, 0x84, 0x00, 0xa8, 0x39, 0xa8, 0xff, 0xf2,
0xf9, 0x8a, 0xf0, 0xe9, 0xa7, 0x97, 0x37, 0xf1, 0x44, 0x2c, 0xc4, 0x01, 0x90, 0x1a, 0x8b, 0xfc,
0x98, 0x86, 0x9e, 0x28, 0x2f, 0x81, 0x15, 0x2b, 0x56, 0x44, 0xf9, 0x39, 0x29, 0x77, 0xac, 0x7c,
0x0e, 0x1d, 0x3a, 0x14, 0xe2, 0xe7, 0xb7, 0xdc, 0x72, 0x0b, 0x07, 0x24, 0xc6, 0xc7, 0xc7, 0xc7,
0xae, 0xff, 0xde, 0xf7, 0xbe, 0x17, 0xdb, 0x01, 0xa2, 0x5d, 0x46, 0x7a, 0x13, 0xa4, 0xde, 0x61,
0x5c, 0xc9, 0xa9, 0x41, 0xa5, 0x9d, 0x6f, 0xfe, 0x2b, 0xcc, 0x69, 0x33, 0x11, 0xe9, 0x4b, 0x06,
0x18, 0xbd, 0x8c, 0xa3, 0x10, 0xe8, 0x7c, 0x13, 0xd1, 0xe2, 0xbb, 0xe0, 0x4d, 0xfc, 0x47, 0xf4,
0x6c, 0x92, 0x89, 0xed, 0x9b, 0x64, 0xb7, 0x4c, 0xb4, 0x03, 0x72, 0xa2, 0x42, 0x91, 0xca, 0x87,
0xf7, 0x40, 0x88, 0x84, 0x2c, 0x48, 0x3d, 0x30, 0xa1, 0x12, 0x13, 0x8b, 0x08, 0x1c, 0x08, 0xff,
0xb4, 0x82, 0x27, 0x5c, 0x5b, 0x5b, 0x1b, 0xe0, 0xff, 0x27, 0x83, 0xc7, 0xbd, 0xbb, 0x97, 0x66,
0xe8, 0xe0, 0xe5, 0x97, 0x5f, 0x4e, 0x82, 0xf4, 0x8c, 0xc4, 0x3f, 0xf0, 0xa5, 0xfe, 0x60, 0xd7,
0x5f, 0x7f, 0x3d, 0xe3, 0x7d, 0x45, 0x20, 0x18, 0x11, 0x40, 0x84, 0x7a, 0x8e, 0x25, 0x27, 0x27,
0xc3, 0xe5, 0x72, 0xb1, 0x9a, 0x9a, 0x1a, 0xf6, 0xf8, 0xfc, 0x87, 0xa5, 0xc2, 0x95, 0x53, 0x05,
0xaf, 0xf2, 0x75, 0x08, 0xc3, 0xf5, 0x94, 0x85, 0x0d, 0xe8, 0x4f, 0x24, 0xdf, 0xb9, 0x10, 0xa1,
0xcc, 0x5f, 0xc0, 0xb9, 0x63, 0x12, 0x5a, 0xd6, 0xcb, 0xc8, 0xff, 0xc8, 0x2e, 0xb9, 0x00, 0x00,
0x35, 0xc8, 0x2e, 0xa2, 0xc5, 0x20, 0xe9, 0x80, 0x48, 0xc9, 0x44, 0x68, 0x74, 0x0c, 0x4f, 0xd4,
0xc4, 0x57, 0x5f, 0x7d, 0x35, 0xa6, 0x4f, 0x9f, 0x1e, 0xbb, 0x27, 0x3d, 0x88, 0x92, 0xa1, 0x0b,
0xf3, 0xe0, 0x80, 0xc8, 0x1f, 0x45, 0xf8, 0x31, 0xed, 0x88, 0x74, 0xdd, 0x75, 0xd7, 0xb1, 0x57,
0x5f, 0x7d, 0x35, 0xfa, 0xec, 0xb3, 0xcf, 0xb2, 0x65, 0xcb, 0x96, 0x09, 0xdc, 0x6a, 0x4c, 0x9b,
0x36, 0x0d, 0x57, 0x5e, 0x79, 0x25, 0x36, 0x6c, 0xd8, 0x10, 0xa1, 0x3e, 0x12, 0xf9, 0x68, 0x4a,
0xf6, 0x45, 0xa0, 0xf7, 0xe4, 0xf6, 0x44, 0x4a, 0x8d, 0x7f, 0x47, 0xad, 0xda, 0xf5, 0x7d, 0x84,
0xb4, 0xbb, 0x20, 0x85, 0xec, 0x80, 0x9b, 0xf2, 0xd5, 0xae, 0x82, 0x58, 0x31, 0x07, 0xfe, 0xa3,
0x3f, 0x82, 0x71, 0x83, 0x0c, 0x8d, 0xeb, 0x65, 0x6f, 0x8c, 0xb7, 0x03, 0x5c, 0xc8, 0xb8, 0x1b,
0x6d, 0x26, 0x01, 0xc9, 0xa5, 0x44, 0x8c, 0xb4, 0x82, 0x17, 0xec, 0x00, 0xef, 0x0b, 0x52, 0x5b,
0x89, 0x9a, 0x34, 0xb6, 0x9a, 0x64, 0x21, 0x18, 0x85, 0x44, 0x8a, 0x1c, 0xdb, 0x91, 0xd7, 0x5e,
0x7b, 0x2d, 0xfa, 0xce, 0x3b, 0xef, 0x44, 0xa8, 0x44, 0x84, 0xa9, 0x53, 0xa7, 0x32, 0xda, 0x81,
0xe8, 0x0b, 0x2f, 0xbc, 0x20, 0x52, 0xc9, 0xb1, 0x79, 0xf3, 0xe6, 0x61, 0xcd, 0x9a, 0x35, 0x31,
0x93, 0xf8, 0xdc, 0x73, 0xcf, 0xf1, 0x6b, 0x45, 0x62, 0x2c, 0x46, 0x83, 0x3a, 0x23, 0x00, 0x8c,
0x00, 0x88, 0x2a, 0x95, 0x2a, 0xab, 0x60, 0xe3, 0x6c, 0xdb, 0x40, 0xde, 0x43, 0x88, 0xd8, 0x72,
0x48, 0x06, 0x42, 0xc0, 0x60, 0x26, 0x39, 0xa0, 0xff, 0x44, 0x24, 0x7f, 0x16, 0xdc, 0x7b, 0xa7,
0xa0, 0x75, 0xad, 0xcc, 0xdb, 0xb4, 0x56, 0xf6, 0x83, 0x09, 0x01, 0x70, 0x01, 0x21, 0x61, 0xca,
0x9c, 0x33, 0x67, 0x8e, 0x89, 0xfe, 0xcf, 0x87, 0x66, 0x2b, 0xc5, 0x30, 0x85, 0xf7, 0x77, 0xbf,
0xfb, 0x5d, 0x98, 0x7a, 0x45, 0xba, 0xe7, 0x9e, 0x7b, 0x44, 0x4a, 0x48, 0x22, 0xb0, 0x9c, 0x0a,
0x79, 0xf3, 0x33, 0xbe, 0xb2, 0xbc, 0x1f, 0xe8, 0x98, 0x8b, 0x90, 0x97, 0x83, 0xb9, 0xf7, 0xde,
0x7b, 0x45, 0x4e, 0x9f, 0xfc, 0x9c, 0xea, 0x5d, 0x22, 0x36, 0x0a, 0x73, 0xab, 0xc1, 0x5f, 0x83,
0x6b, 0x09, 0xe9, 0x02, 0x0b, 0x04, 0x02, 0x8c, 0x66, 0x70, 0x46, 0x1e, 0xc7, 0x47, 0xbb, 0x91,
0x54, 0x27, 0xcf, 0x55, 0xcb, 0x3f, 0x9b, 0xca, 0x02, 0xea, 0xe5, 0x10, 0xdd, 0xed, 0xf4, 0x6a,
0x64, 0x4a, 0x4d, 0xbb, 0xc0, 0xea, 0xe7, 0x23, 0x98, 0xfa, 0x2f, 0xb0, 0x6d, 0xbe, 0x14, 0xb5,
0xab, 0x64, 0xe9, 0x17, 0x05, 0x40, 0xa6, 0x2e, 0x85, 0x86, 0xf7, 0x6a, 0xaa, 0xe9, 0x0b, 0x62,
0xf6, 0xec, 0xd9, 0x03, 0x33, 0x67, 0xce, 0x74, 0x35, 0x36, 0x36, 0x76, 0xd3, 0x1b, 0x8f, 0xd2,
0xf3, 0x18, 0x39, 0x44, 0x4c, 0x9a, 0x34, 0x89, 0x0b, 0x18, 0x23, 0xc3, 0xc5, 0x01, 0xd1, 0x9d,
0x18, 0xa1, 0x95, 0x16, 0xe9, 0xb5, 0x45, 0xaa, 0xf5, 0x20, 0xf9, 0x2b, 0x81, 0x2c, 0x8a, 0x48,
0x89, 0x87, 0xf8, 0x39, 0xdd, 0x07, 0x07, 0x07, 0x07, 0x03, 0xc4, 0x44, 0x8c, 0xcf, 0xd6, 0x0b,
0x16, 0x2c, 0x18, 0xa5, 0xe7, 0x25, 0x0d, 0x0d, 0x0d, 0x0d, 0xae, 0x7e, 0xe5, 0x2e, 0x6f, 0xc7,
0xfe, 0x9b, 0x10, 0x36, 0x1e, 0x00, 0x13, 0x88, 0x69, 0x5d, 0x15, 0x40, 0xf7, 0x47, 0x10, 0x4a,
0x7f, 0x05, 0xdf, 0xa1, 0xeb, 0xd1, 0xb1, 0x46, 0x86, 0xaa, 0x95, 0xb2, 0x79, 0x13, 0x02, 0xa0,
0xc4, 0x72, 0x69, 0x95, 0x2d, 0xe3, 0x05, 0x79, 0x71, 0x0d, 0x51, 0x5f, 0xf2, 0x19, 0x9f, 0x42,
0x89, 0x26, 0xd3, 0x0c, 0x51, 0x45, 0x13, 0x52, 0x90, 0x83, 0xe1, 0xc9, 0xf0, 0x0f, 0xc5, 0xf8,
0x8a, 0x53, 0x83, 0x0a, 0x1f, 0x7f, 0xfc, 0xb1, 0xb4, 0x70, 0xe1, 0x42, 0x46, 0x09, 0xb2, 0xf9,
0xf3, 0xe7, 0x33, 0xee, 0xa1, 0xf8, 0xee, 0xd1, 0xb9, 0x40, 0xfc, 0xcf, 0x49, 0x40, 0xe2, 0x16,
0x84, 0x7a, 0x65, 0x90, 0x8e, 0x6b, 0x89, 0x9d, 0xfa, 0x67, 0xde, 0x76, 0x9b, 0x23, 0xe9, 0x35,
0x59, 0x9b, 0x53, 0xfe, 0x14, 0xa2, 0xf6, 0x32, 0x20, 0x4a, 0xd8, 0xac, 0xe4, 0xae, 0x5b, 0x9f,
0x8e, 0x69, 0x83, 0x2b, 0x6e, 0x32, 0x6a, 0x57, 0xc8, 0xfa, 0xf3, 0xd7, 0xca, 0x26, 0xc7, 0x00,
0x90, 0xc0, 0x6c, 0x25, 0x65, 0x3d, 0x0b, 0xe0, 0x7f, 0x1a, 0x54, 0x52, 0x39, 0xc4, 0x3a, 0x56,
0xae, 0xac, 0x54, 0x86, 0x61, 0xaa, 0x69, 0x51, 0x2e, 0x97, 0x33, 0x3a, 0x67, 0xc4, 0x4c, 0x02,
0x51, 0xa6, 0x40, 0x65, 0x22, 0x92, 0xd7, 0x67, 0xb4, 0x08, 0xa0, 0x7b, 0x81, 0x98, 0x8f, 0x7f,
0x7c, 0xc9, 0x96, 0x2f, 0x5f, 0xae, 0xa3, 0xd7, 0x18, 0x78, 0xfb, 0xed, 0xb7, 0xed, 0xbf, 0xfc,
0xe5, 0x2f, 0x17, 0x3f, 0x3d, 0x4b, 0xf6, 0x84, 0xfc, 0xb3, 0xef, 0x08, 0xc1, 0xae, 0x8d, 0x90,
0x62, 0xda, 0x40, 0xe5, 0x64, 0xd8, 0x44, 0xda, 0x30, 0x17, 0x81, 0xa4, 0x1b, 0x61, 0x58, 0x27,
0x43, 0xe9, 0x52, 0xd9, 0xb6, 0xaf, 0x03, 0x20, 0x05, 0x41, 0xee, 0xff, 0x36, 0x08, 0x48, 0x0d,
0x25, 0x3f, 0x42, 0x16, 0x23, 0x4a, 0x2d, 0x10, 0xb3, 0x28, 0x54, 0x1a, 0x7e, 0xad, 0x56, 0xeb,
0xe7, 0x42, 0xa7, 0x50, 0x28, 0x38, 0x20, 0x89, 0x56, 0x9b, 0x0b, 0x21, 0xff, 0x94, 0x4f, 0xa2,
0x06, 0xb7, 0x93, 0xe5, 0xe8, 0xa3, 0xbe, 0xe9, 0xe5, 0xdf, 0x57, 0x10, 0x69, 0x4c, 0xdf, 0xf9,
0xb4, 0xec, 0x4b, 0xcd, 0xb1, 0xdb, 0x48, 0x1b, 0xb8, 0x9f, 0xa3, 0xca, 0x74, 0xd0, 0x7c, 0xdf,
0x41, 0xda, 0x50, 0x74, 0x17, 0x46, 0xf7, 0x5f, 0x87, 0x8a, 0x65, 0x97, 0x88, 0x65, 0xcb, 0x65,
0xb7, 0xca, 0xe8, 0x49, 0x2b, 0xa8, 0xbe, 0x6d, 0xfc, 0xcb, 0x3c, 0x7a, 0xc3, 0x6f, 0x2d, 0xa8,
0x84, 0x9c, 0x7c, 0xc2, 0xa3, 0x44, 0x25, 0x8f, 0xc7, 0x23, 0x72, 0xd5, 0xa5, 0x08, 0xd3, 0x63,
0x01, 0x7a, 0x2c, 0x4c, 0xa0, 0xf8, 0x63, 0x22, 0x99, 0xc7, 0x10, 0xf9, 0x2f, 0xdf, 0x4b, 0x2f,
0xbd, 0xe4, 0x98, 0x35, 0x6b, 0xd6, 0x53, 0xb1, 0x55, 0x95, 0xc9, 0x2e, 0x9b, 0x36, 0x55, 0x76,
0x5b, 0xfa, 0x9b, 0x97, 0xda, 0xc6, 0xea, 0xff, 0xa8, 0x0d, 0xa2, 0xe1, 0x0b, 0xe8, 0x8f, 0xfc,
0x02, 0xf9, 0xcb, 0xbe, 0x8b, 0x7d, 0xcb, 0x1e, 0xb6, 0x67, 0xac, 0x95, 0x4d, 0xe2, 0x3a, 0x70,
0x3d, 0xd9, 0x83, 0x5a, 0x62, 0x1e, 0x3b, 0x0f, 0xf2, 0x46, 0x67, 0x83, 0x54, 0xfa, 0xbc, 0xa0,
0x7e, 0x39, 0x2f, 0xe8, 0xb9, 0xe7, 0x05, 0xed, 0xe6, 0xd9, 0xa0, 0x85, 0x39, 0x13, 0x6e, 0xce,
0x48, 0x74, 0xbd, 0x44, 0xf5, 0x2f, 0x12, 0xe3, 0x88, 0x64, 0x3b, 0x22, 0x73, 0xe7, 0xce, 0x0d,
0xf2, 0xf8, 0xfd, 0xef, 0x7f, 0xef, 0x23, 0x4d, 0xb0, 0xd1, 0x35, 0xdd, 0x94, 0xf8, 0x59, 0xa1,
0xa2, 0xdb, 0x94, 0xf7, 0x1e, 0x92, 0x2d, 0xae, 0xdb, 0xf2, 0x7d, 0xf8, 0xbb, 0xb6, 0x43, 0x53,
0xbc, 0x1e, 0xf9, 0x2b, 0x6f, 0x42, 0x5e, 0xc2, 0xdb, 0x38, 0x7a, 0x2c, 0x85, 0x4c, 0xe1, 0x16,
0xc3, 0x5f, 0xed, 0xa7, 0x06, 0xbc, 0x2c, 0xee, 0xb8, 0xe3, 0x8e, 0x57, 0xee, 0xbe, 0xfb, 0xee,
0x21, 0x52, 0xf2, 0x01, 0xa2, 0x5c, 0xdb, 0x1f, 0xbe, 0x50, 0x21, 0x8a, 0x81, 0x9d, 0x8c, 0x9f,
0xeb, 0xf6, 0xdb, 0x6f, 0x9f, 0x7f, 0x81, 0x48, 0xc9, 0x64, 0x37, 0x26, 0x3c, 0x2f, 0xcb, 0xcf,
0xfa, 0xf0, 0x5a, 0x51, 0x5d, 0xb8, 0x1e, 0x5a, 0xa3, 0x06, 0x55, 0xf5, 0x4d, 0x38, 0x9a, 0x94,
0x81, 0x4f, 0x3e, 0x59, 0xb9, 0xe4, 0xaf, 0xfe, 0x5b, 0x89, 0x19, 0x33, 0x66, 0x5c, 0x49, 0x54,
0xfc, 0x11, 0x01, 0x71, 0x93, 0x47, 0xb2, 0x52, 0x49, 0xd9, 0x88, 0x92, 0x4d, 0xc4, 0x70, 0x4d,
0xe3, 0xfa, 0x1c, 0x99, 0x6c, 0xd2, 0x2d, 0xd3, 0x64, 0xf7, 0xcc, 0x9e, 0xf1, 0x9d, 0xfb, 0x77,
0xc4, 0xc5, 0xa5, 0xa7, 0x66, 0x64, 0xda, 0x13, 0x0e, 0x1c, 0x32, 0xbf, 0xf3, 0xce, 0x7b, 0x6b,
0xce, 0xec, 0xd6, 0xdf, 0xe4, 0x07, 0x1a, 0x54, 0x2e, 0xd7, 0x90, 0xb1, 0xdb, 0x40, 0xbb, 0x12,
0xa0, 0x7b, 0x1f, 0x81, 0x9a, 0x3d, 0xa1, 0xdb, 0x94, 0xc9, 0xae, 0xa0, 0xb8, 0x92, 0xe2, 0x47,
0x14, 0xff, 0xcc, 0x1b, 0x9c, 0xe2, 0xf2, 0xbf, 0x8b, 0x5f, 0xab, 0xdc, 0x7c, 0xf3, 0xcd, 0x93,
0xbe, 0xfe, 0x85, 0xc5, 0x9f, 0x1b, 0xff, 0x05, 0x15, 0x63, 0xa5, 0xc9, 0x16, 0xbd, 0x27, 0x50,
0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
0x87, 0x00, 0x00, 0x13, 0x81, 0x49, 0x44, 0x41, 0x54, 0x68, 0xde, 0xdd, 0x5a, 0x07, 0x74, 0x5b,
0x65, 0x96, 0x16, 0x25, 0xc9, 0x12, 0x86, 0x13, 0xca, 0xc2, 0x0e, 0xc9, 0x72, 0x58, 0xd8, 0xb0,
0x30, 0x94, 0xb3, 0x90, 0x90, 0x02, 0x0c, 0x0b, 0x01, 0x02, 0x24, 0x90, 0x1c, 0xca, 0x10, 0x3a,
0x2c, 0x2d, 0x94, 0x84, 0x34, 0x52, 0x48, 0x99, 0xf4, 0x4a, 0x48, 0x2f, 0x8e, 0x49, 0x21, 0x8e,
0xed, 0x38, 0xb6, 0xe3, 0xb8, 0x97, 0xd8, 0xb2, 0xe3, 0x26, 0x17, 0xd9, 0x96, 0x6d, 0xb9, 0x48,
0x96, 0x25, 0xd9, 0x2a, 0xb6, 0x2c, 0xb9, 0xc8, 0x92, 0xd5, 0xdf, 0x7b, 0xff, 0xdd, 0xef, 0xd7,
0x4e, 0x32, 0x09, 0xb1, 0x33, 0xcc, 0x2e, 0x53, 0x76, 0x75, 0xce, 0xf5, 0x7b, 0xbf, 0xf5, 0xf4,
0x74, 0xbf, 0xff, 0xde, 0xfb, 0xdd, 0xef, 0x4a, 0x92, 0x11, 0x91, 0xec, 0xff, 0xb2, 0xc9, 0xfe,
0x5f, 0x03, 0x18, 0x3f, 0x7e, 0xfc, 0xb0, 0x99, 0x33, 0x67, 0x1e, 0x7f, 0xe5, 0x95, 0x57, 0xf2,
0x5f, 0x7c, 0xf1, 0xc5, 0x55, 0xd3, 0xa6, 0x4d, 0x7b, 0xea, 0x8d, 0x37, 0xde, 0xb8, 0x6e, 0xb0,
0x6b, 0xf1, 0xdc, 0x3f, 0xe3, 0xda, 0xd4, 0x19, 0x33, 0x66, 0x1c, 0x7b, 0xee, 0xb9, 0xe7, 0xee,
0xfe, 0xbb, 0x00, 0xf0, 0xfc, 0xf3, 0xcf, 0xcf, 0x5e, 0xb5, 0x6a, 0x95, 0x4d, 0xa7, 0xd3, 0x99,
0x92, 0x93, 0x93, 0xcd, 0x0b, 0x17, 0x2e, 0x74, 0xc0, 0xd1, 0x20, 0x1c, 0xad, 0x9d, 0x3e, 0x7d,
0xfa, 0x0e, 0x3c, 0x3f, 0xe3, 0x85, 0x17, 0x5e, 0xb8, 0x99, 0x5f, 0x0b, 0xc7, 0xe5, 0xf1, 0xf1,
0xf1, 0xe6, 0xac, 0xac, 0x2c, 0x33, 0x00, 0xfb, 0xb0, 0x8e, 0xc4, 0x35, 0xbf, 0xfe, 0x9b, 0x02,
0x80, 0xa3, 0x49, 0xb5, 0xb5, 0xb5, 0x26, 0x9c, 0x37, 0xc1, 0xea, 0x61, 0x66, 0x51, 0x14, 0xed,
0x1d, 0x1d, 0x1d, 0xe6, 0xbc, 0xbc, 0x3c, 0xf3, 0xda, 0xb5, 0x6b, 0x3b, 0xe1, 0x68, 0xf0, 0xe5,
0x97, 0x5f, 0xb6, 0xbe, 0xf6, 0xda, 0x6b, 0xc1, 0x9c, 0x9c, 0x9c, 0x7e, 0xab, 0xd5, 0xda, 0x1a,
0x0c, 0x06, 0x3b, 0x13, 0x12, 0x12, 0x2c, 0xaf, 0xbe, 0xfa, 0xaa, 0x77, 0xdb, 0xae, 0xdd, 0xc9,
0x8a, 0x86, 0xd6, 0x13, 0x15, 0x1a, 0xe3, 0xf6, 0x72, 0x6d, 0xdb, 0x3c, 0x55, 0x53, 0xeb, 0x4c,
0x55, 0x83, 0xf6, 0xd1, 0xb2, 0xa6, 0xa6, 0x9b, 0xff, 0xe2, 0x00, 0x5e, 0x7a, 0xe9, 0xa5, 0x2e,
0xb7, 0xdb, 0x6d, 0xc1, 0x79, 0x3a, 0x2c, 0x6a, 0x60, 0x60, 0x20, 0x06, 0xc7, 0x78, 0x58, 0x1e,
0xac, 0x06, 0x66, 0x64, 0x8c, 0x39, 0x8c, 0x46, 0x63, 0xb0, 0xbc, 0xbc, 0x5c, 0x8c, 0x8c, 0x8c,
0x0c, 0x7d, 0xf2, 0xe9, 0xa7, 0xc2, 0xae, 0x03, 0x91, 0xa2, 0xbc, 0x52, 0x25, 0xd5, 0x69, 0x75,
0x54, 0xa7, 0x33, 0x50, 0x49, 0x53, 0x3b, 0x2b, 0x6d, 0x36, 0x09, 0x15, 0x9a, 0xb6, 0x50, 0x95,
0x46, 0x2f, 0x54, 0x6b, 0x74, 0xa2, 0xb2, 0xbe, 0x49, 0xcc, 0xaf, 0xd1, 0x66, 0x15, 0x55, 0xd6,
0xdf, 0xf5, 0x17, 0x01, 0xc0, 0x73, 0x1a, 0x3b, 0xe8, 0xc7, 0xb9, 0x1d, 0x16, 0xd3, 0xd7, 0xd7,
0x17, 0x3b, 0x72, 0xe4, 0xc8, 0xe0, 0xe8, 0xd1, 0xa3, 0x5d, 0x00, 0xd6, 0xb2, 0x6d, 0xdb, 0xb6,
0x62, 0x8d, 0x46, 0x93, 0x68, 0xb3, 0xd9, 0x0a, 0x9a, 0x9a, 0x9a, 0x42, 0xb8, 0x26, 0xe4, 0xf1,
0xfb, 0xbd, 0xb5, 0xda, 0x56, 0xaa, 0xd5, 0x9b, 0xa8, 0x54, 0x67, 0x67, 0xd9, 0x9a, 0x5e, 0x16,
0x59, 0xde, 0x4d, 0x3b, 0x72, 0x0d, 0x6c, 0x5b, 0x86, 0x86, 0xad, 0x49, 0x6a, 0x90, 0x36, 0x64,
0x9b, 0x1d, 0x3b, 0xcb, 0xdc, 0xba, 0x04, 0x55, 0x77, 0x77, 0x91, 0xda, 0x10, 0x28, 0x55, 0xaa,
0xd8, 0xd9, 0x0a, 0x75, 0x51, 0x5e, 0x51, 0xf9, 0x6f, 0x7e, 0x51, 0x00, 0xc8, 0xef, 0xb7, 0xb6,
0x6e, 0xdd, 0x6a, 0xc5, 0x79, 0x2b, 0xdf, 0x7d, 0x6e, 0x48, 0x8d, 0x13, 0xe9, 0xe9, 0xe9, 0x99,
0xf3, 0xe6, 0xcd, 0xab, 0x9e, 0x34, 0x69, 0x92, 0xe5, 0xfa, 0xeb, 0xaf, 0x0f, 0x8e, 0x19, 0x33,
0x46, 0x2a, 0x2e, 0x2e, 0xf6, 0x75, 0x76, 0xf7, 0x7a, 0x6a, 0x9b, 0xb5, 0x54, 0xae, 0xb7, 0xb1,
0xe8, 0x06, 0xbf, 0x14, 0x5b, 0x3f, 0xc0, 0xd2, 0x5a, 0x43, 0xa2, 0xdc, 0x4c, 0xa2, 0xdc, 0xc4,
0xc4, 0xec, 0x16, 0x2f, 0x8b, 0xaf, 0xee, 0x64, 0xdb, 0x93, 0x95, 0x6c, 0xc1, 0xc1, 0x0c, 0xb6,
0x20, 0x32, 0xc7, 0xbd, 0x26, 0xb9, 0xd1, 0x14, 0x57, 0xd9, 0xd9, 0x97, 0xaf, 0x6a, 0x09, 0xe4,
0x97, 0x56, 0x4a, 0x99, 0xe7, 0xaa, 0x3e, 0xff, 0xc5, 0x00, 0xa0, 0x00, 0x23, 0x0a, 0x0b, 0x0b,
0xcd, 0x38, 0x57, 0x72, 0xe7, 0x91, 0xd3, 0xd9, 0x37, 0xdd, 0x74, 0x93, 0x77, 0xc2, 0x84, 0x09,
0x96, 0x25, 0x4b, 0x96, 0x54, 0x22, 0xdf, 0xd3, 0x5b, 0x5b, 0x5b, 0x8b, 0xe6, 0xcf, 0x9f, 0x2f,
0x1c, 0x3c, 0x1a, 0xc5, 0x6a, 0x1a, 0x35, 0x24, 0xd7, 0x76, 0x4b, 0xfb, 0x14, 0x0e, 0xe9, 0x44,
0x55, 0x77, 0x30, 0xd3, 0x20, 0x78, 0xa3, 0x95, 0x0e, 0xe1, 0x87, 0xa2, 0x76, 0x96, 0xa8, 0x76,
0x05, 0xcf, 0xb6, 0x31, 0xff, 0x39, 0x0b, 0x09, 0x8a, 0x4e, 0x62, 0xc5, 0x56, 0x89, 0x25, 0xab,
0x9d, 0xec, 0x68, 0xb1, 0x51, 0xda, 0x94, 0x50, 0x19, 0x58, 0x15, 0x53, 0x2a, 0x25, 0x29, 0xb4,
0x52, 0x4e, 0x7e, 0x09, 0x5b, 0xbf, 0x6d, 0xdf, 0xbe, 0x67, 0x9e, 0x79, 0x66, 0xcc, 0xcf, 0x06,
0x00, 0x5a, 0xbc, 0x06, 0x4c, 0xf2, 0x11, 0x6c, 0xeb, 0x79, 0x9b, 0x3a, 0x75, 0xea, 0x56, 0xd0,
0x66, 0xcf, 0x8e, 0x1d, 0x3b, 0x5c, 0x3b, 0x77, 0xee, 0x34, 0x6e, 0xd9, 0xb2, 0xa5, 0x01, 0x69,
0xd3, 0x73, 0xcf, 0x3d, 0xf7, 0xd0, 0xd8, 0xb1, 0x63, 0xe9, 0xde, 0x7b, 0xef, 0x65, 0xf7, 0xdd,
0x77, 0x9f, 0x34, 0x6e, 0xdc, 0x38, 0x76, 0x32, 0xe1, 0xb4, 0x58, 0x59, 0xd7, 0x40, 0x49, 0xaa,
0x4e, 0xb6, 0xbf, 0xa4, 0x5b, 0x5c, 0x1f, 0xa7, 0xa0, 0x15, 0x3f, 0xe6, 0xd1, 0xb6, 0x94, 0x3a,
0x69, 0x5f, 0xae, 0x36, 0xb4, 0x2e, 0xb6, 0x44, 0xdc, 0x92, 0x58, 0xc1, 0x76, 0xa7, 0xd7, 0x49,
0x87, 0x0b, 0x74, 0xc1, 0x63, 0x85, 0xad, 0xc1, 0xe8, 0x62, 0x9d, 0x78, 0xac, 0x40, 0xcb, 0x0e,
0xe6, 0x34, 0xb0, 0x63, 0x85, 0x7a, 0x96, 0x6b, 0x08, 0x48, 0xf1, 0x2a, 0x47, 0x20, 0x4b, 0xd9,
0xc2, 0x52, 0xb3, 0x0a, 0x68, 0xf6, 0x97, 0x73, 0xfd, 0xf0, 0xa1, 0x63, 0xca, 0x94, 0x29, 0x2f,
0xfd, 0x49, 0x00, 0x70, 0xf4, 0x3f, 0x67, 0xcf, 0x9e, 0xed, 0x38, 0x7b, 0xf6, 0xac, 0x25, 0x37,
0x37, 0xd7, 0xc2, 0x8f, 0xb0, 0x8e, 0x33, 0x67, 0xce, 0x30, 0x44, 0x40, 0x2c, 0x28, 0x28, 0xf0,
0xe5, 0xe7, 0xe7, 0x7b, 0x41, 0x91, 0x52, 0x6c, 0x6c, 0x2c, 0x5d, 0x6c, 0x71, 0x71, 0xa7, 0xa8,
0xb4, 0x4a, 0x45, 0x85, 0x8d, 0xed, 0x74, 0xa0, 0xbc, 0x9f, 0xa2, 0xca, 0x3b, 0x58, 0xac, 0xb2,
0x83, 0x8e, 0x96, 0x98, 0xe8, 0x47, 0x85, 0x99, 0x62, 0x2a, 0x3b, 0x28, 0xb6, 0xc2, 0xc2, 0x4e,
0x94, 0x18, 0xd8, 0xa9, 0xb2, 0x36, 0x4a, 0xaa, 0xb2, 0x48, 0x49, 0xd5, 0x56, 0x29, 0xa9, 0xca,
0x2c, 0x65, 0xd4, 0x75, 0x48, 0xf1, 0x15, 0x66, 0xb6, 0x3d, 0x51, 0xc1, 0x8e, 0x9f, 0x6b, 0x15,
0x53, 0xd5, 0x3d, 0x52, 0x42, 0x8d, 0x3d, 0x94, 0x53, 0xd1, 0xcc, 0xce, 0xa4, 0xe7, 0x33, 0x95,
0xaa, 0xd6, 0x82, 0xcd, 0x6c, 0xfc, 0x93, 0x00, 0xf8, 0x8e, 0x73, 0xa7, 0xb1, 0x68, 0x87, 0x69,
0xb8, 0xf9, 0x7c, 0x3e, 0x73, 0x77, 0x77, 0xb7, 0xc8, 0x0b, 0x13, 0xd6, 0x0f, 0xa6, 0x71, 0x69,
0xb5, 0x5a, 0x42, 0xd1, 0x5e, 0x62, 0x45, 0x8a, 0x0a, 0x2a, 0xa9, 0xaa, 0xa5, 0x34, 0xcd, 0x00,
0x3b, 0xd9, 0xe0, 0x67, 0x99, 0x2d, 0x5e, 0xca, 0x33, 0x86, 0x28, 0x53, 0x17, 0xa0, 0xb4, 0xa6,
0x7e, 0x2a, 0x30, 0xfa, 0xa9, 0xb8, 0x3d, 0x40, 0x05, 0x7a, 0x37, 0x2b, 0x36, 0x78, 0x59, 0x95,
0x4d, 0x92, 0x54, 0x0e, 0x12, 0x2b, 0xac, 0x02, 0x53, 0x77, 0x4b, 0x52, 0x91, 0x7e, 0x80, 0x25,
0x29, 0x4d, 0x52, 0x64, 0x4e, 0xad, 0x50, 0xd6, 0xc9, 0xc4, 0x02, 0x83, 0x2f, 0x14, 0x5b, 0xd6,
0xc6, 0x32, 0xf2, 0xcb, 0x59, 0x76, 0x7e, 0xb9, 0x17, 0xbe, 0x9d, 0xfb, 0x73, 0x00, 0x70, 0xe7,
0xd5, 0xed, 0xed, 0xed, 0x7a, 0xec, 0xb8, 0x1b, 0x85, 0x29, 0x2a, 0x95, 0xca, 0x10, 0xcc, 0x5b,
0x52, 0x52, 0x12, 0x40, 0x24, 0x48, 0xad, 0x56, 0x5f, 0x30, 0xf4, 0x01, 0x42, 0xe1, 0x51, 0x41,
0xbd, 0x91, 0x62, 0x9b, 0x25, 0x76, 0xbc, 0xc2, 0x46, 0x59, 0x00, 0x50, 0xd0, 0x16, 0xa4, 0x9c,
0xd6, 0x00, 0xe5, 0x68, 0xfb, 0x49, 0xae, 0x73, 0x91, 0xc2, 0x1c, 0xa0, 0xc2, 0x56, 0x17, 0xcb,
0x6d, 0x72, 0x90, 0xd2, 0x1a, 0x60, 0xb5, 0x00, 0x50, 0xdd, 0x29, 0x4a, 0xf5, 0x5d, 0x41, 0x96,
0x87, 0xff, 0xa5, 0xd5, 0x98, 0xa5, 0xfd, 0xc9, 0xa5, 0x01, 0x65, 0x17, 0xb9, 0xaa, 0xba, 0x28,
0x50, 0x66, 0x11, 0x84, 0xac, 0xb2, 0x26, 0x76, 0x22, 0x2e, 0x95, 0x9e, 0x7d, 0xf6, 0x59, 0x25,
0xec, 0x9f, 0xae, 0x08, 0x80, 0xe7, 0xfb, 0xc5, 0x00, 0x6a, 0x6a, 0x6a, 0xcc, 0x71, 0x71, 0x71,
0x02, 0x52, 0x48, 0x42, 0xf7, 0xe5, 0xc7, 0xe0, 0xc9, 0x93, 0x27, 0xc5, 0xed, 0xdb, 0xb7, 0x53,
0x5a, 0x5a, 0x5a, 0xd8, 0xf9, 0xfa, 0xfa, 0x7a, 0xda, 0xb1, 0x73, 0x27, 0xe5, 0x15, 0x2a, 0x28,
0xa3, 0xc1, 0x41, 0x29, 0x7a, 0x26, 0xed, 0xc9, 0x6e, 0xa6, 0xa3, 0x85, 0x06, 0x2a, 0x6a, 0x0f,
0xd2, 0x39, 0xa3, 0x8f, 0xb2, 0x1a, 0x7b, 0xa8, 0xd0, 0xe0, 0xa1, 0x32, 0xb3, 0x9f, 0xe2, 0x8a,
0x9b, 0xe9, 0xac, 0xba, 0x83, 0x15, 0xeb, 0xfb, 0x89, 0x03, 0xa8, 0x73, 0x30, 0xb1, 0xc6, 0xea,
0xa5, 0x62, 0x5d, 0x1f, 0xcb, 0xac, 0x35, 0x4b, 0xdb, 0xa2, 0x32, 0x58, 0x95, 0x35, 0xe8, 0xac,
0x71, 0x90, 0xb3, 0xda, 0x4e, 0x03, 0xf2, 0xe6, 0x6e, 0x76, 0x32, 0x31, 0x9d, 0x76, 0xed, 0x39,
0xe0, 0xc4, 0x06, 0x7b, 0xe0, 0xe3, 0x26, 0xc8, 0x93, 0x51, 0x3f, 0x0b, 0x80, 0x24, 0x49, 0x0d,
0xa5, 0xa5, 0xa5, 0x0c, 0x29, 0x23, 0x36, 0x37, 0x37, 0x7b, 0x91, 0x2a, 0x03, 0x55, 0x55, 0x55,
0xa2, 0x42, 0xa1, 0xa0, 0x8b, 0x41, 0x64, 0x66, 0xe5, 0x50, 0xb6, 0xbc, 0x88, 0x52, 0xeb, 0xbb,
0x28, 0x55, 0x1b, 0x60, 0x09, 0xb5, 0x3d, 0x74, 0x30, 0x57, 0x43, 0x71, 0x0a, 0x43, 0xd8, 0xe9,
0x0c, 0xfc, 0xbf, 0xc4, 0xe8, 0xa5, 0x32, 0x93, 0x9f, 0xa2, 0xe5, 0xf5, 0x2c, 0x45, 0x69, 0xa4,
0xb2, 0x76, 0x0f, 0x52, 0x87, 0x44, 0xad, 0x93, 0x44, 0x65, 0xbb, 0x9b, 0x55, 0xb6, 0xbb, 0x58,
0x9e, 0xda, 0x22, 0xed, 0x8b, 0xcf, 0x13, 0x8b, 0x34, 0x76, 0x2f, 0x30, 0xf7, 0xe1, 0x79, 0x77,
0xb9, 0xc9, 0x2b, 0xc6, 0xa7, 0x9f, 0xa3, 0xe4, 0xf4, 0x42, 0x9f, 0xd7, 0xeb, 0xb5, 0xa2, 0x41,
0x9a, 0x00, 0xa0, 0x1f, 0x45, 0xbd, 0xe4, 0xe9, 0xa7, 0x9f, 0xfe, 0x87, 0x2b, 0x02, 0x80, 0xb3,
0x36, 0xb0, 0x4e, 0xd8, 0x59, 0x18, 0xe3, 0xc6, 0xd7, 0x28, 0x70, 0xba, 0x18, 0x44, 0x06, 0x00,
0xa4, 0x67, 0x17, 0xd0, 0x99, 0x5a, 0x5b, 0xb8, 0x68, 0x53, 0x1a, 0x5d, 0x94, 0xa3, 0xf3, 0xd1,
0xa1, 0x2c, 0x15, 0x25, 0x96, 0x6a, 0xe9, 0x5c, 0x4b, 0x0f, 0x80, 0xf8, 0xa8, 0xc2, 0x02, 0x00,
0xf9, 0x00, 0x50, 0xa1, 0xa7, 0xba, 0x2e, 0x41, 0xd2, 0xc1, 0x79, 0x04, 0x42, 0x54, 0x1a, 0xfb,
0x58, 0x7d, 0xa7, 0x8f, 0x95, 0x68, 0x3a, 0xa4, 0xe8, 0x2c, 0x85, 0x20, 0x57, 0x19, 0x05, 0xbd,
0x93, 0x9c, 0xba, 0x3e, 0xf2, 0xaa, 0xac, 0xbe, 0xd0, 0xa9, 0x8c, 0x22, 0xf6, 0xc3, 0xb1, 0xc4,
0x00, 0x7c, 0xca, 0xe6, 0x1d, 0xbf, 0xbf, 0xbf, 0xdf, 0x0c, 0x3f, 0x2c, 0xf0, 0xd7, 0xfe, 0xd4,
0x53, 0x4f, 0x7d, 0x06, 0x20, 0xd7, 0x0e, 0x0a, 0x00, 0xbb, 0xef, 0x44, 0x03, 0xa3, 0x8d, 0x1b,
0x37, 0x5e, 0x62, 0x9b, 0x37, 0x6f, 0x0e, 0x83, 0x00, 0x33, 0xd1, 0xf7, 0xdf, 0x7f, 0x4f, 0xa9,
0x69, 0x19, 0x94, 0x9a, 0x29, 0x0f, 0x17, 0xeb, 0x8e, 0xd4, 0x5a, 0x4a, 0x6f, 0x76, 0x53, 0xbe,
0x11, 0xf9, 0xae, 0xf7, 0xd0, 0xde, 0x33, 0xa5, 0x74, 0xb6, 0xd1, 0x46, 0x75, 0xb6, 0x00, 0x35,
0xa1, 0x58, 0xcf, 0x94, 0x36, 0x31, 0xb9, 0xda, 0x44, 0x06, 0x17, 0x89, 0x46, 0x98, 0xa1, 0x9f,
0x89, 0x55, 0x86, 0x6e, 0xd2, 0xf7, 0x09, 0x92, 0xb2, 0xd5, 0x26, 0xa5, 0x14, 0xab, 0x82, 0xf2,
0xea, 0x16, 0x66, 0x74, 0x4a, 0xae, 0x36, 0x17, 0x05, 0x2a, 0x5b, 0xbb, 0x85, 0x84, 0xf4, 0x42,
0x69, 0xcf, 0xbe, 0xe3, 0x22, 0xd8, 0xee, 0x2c, 0xfc, 0x3a, 0x01, 0x93, 0x73, 0x2d, 0x66, 0xb7,
0xdb, 0x4d, 0xcb, 0x96, 0x2d, 0xeb, 0x84, 0xdf, 0x6d, 0xff, 0x81, 0xc7, 0x65, 0x00, 0x8a, 0x8a,
0x8a, 0x7c, 0x90, 0x09, 0x97, 0x01, 0xe0, 0x86, 0xbe, 0x40, 0x15, 0x15, 0x15, 0xe1, 0x28, 0x70,
0x00, 0xa7, 0x93, 0xb3, 0x29, 0x1d, 0x31, 0xdf, 0x95, 0xa6, 0xa2, 0x14, 0x75, 0x0f, 0xe5, 0x68,
0x5c, 0x28, 0x58, 0x37, 0x1d, 0x4c, 0x2d, 0xa7, 0x1c, 0xb5, 0x8d, 0x94, 0xd8, 0xfd, 0x86, 0x6e,
0x26, 0x26, 0x14, 0xd6, 0x51, 0x61, 0x83, 0x85, 0x19, 0xb1, 0xf3, 0xed, 0x00, 0xa0, 0xef, 0x0d,
0x49, 0x6a, 0x73, 0x2f, 0x59, 0x07, 0x48, 0xaa, 0x33, 0xda, 0xa5, 0xb3, 0x95, 0x0d, 0xc1, 0x4a,
0xad, 0x45, 0x6c, 0xe9, 0xf2, 0xf8, 0x3a, 0x3d, 0x14, 0xca, 0xaf, 0xd1, 0x89, 0x09, 0x69, 0x05,
0xe2, 0xe6, 0x6d, 0x07, 0x89, 0x37, 0xcc, 0xf3, 0x4a, 0xe0, 0x0f, 0x40, 0x0a, 0x61, 0x56, 0xc8,
0x17, 0x23, 0xd2, 0xca, 0x2e, 0xc3, 0x9f, 0x4b, 0x00, 0xc8, 0xe5, 0x72, 0x69, 0x28, 0x00, 0x7c,
0xe7, 0xcf, 0x03, 0xc0, 0x8d, 0x29, 0x3e, 0x29, 0x93, 0x32, 0x2b, 0xb4, 0x74, 0x20, 0x57, 0x4b,
0xd9, 0x1a, 0x37, 0x9d, 0xd5, 0xba, 0x28, 0xb7, 0xa9, 0x9b, 0x22, 0x52, 0x15, 0x94, 0xa9, 0x32,
0x93, 0x02, 0x5b, 0x5d, 0x63, 0xf6, 0xb2, 0xa4, 0xa2, 0x7a, 0xaa, 0x68, 0xe9, 0x62, 0x70, 0x5e,
0x32, 0xc3, 0x69, 0x5d, 0x97, 0x87, 0x5a, 0xed, 0x1e, 0xd6, 0xe5, 0x25, 0xa9, 0xc9, 0xe4, 0x60,
0xe7, 0xaa, 0x1a, 0x85, 0x2a, 0xad, 0x89, 0xd9, 0x3c, 0x92, 0xc7, 0xe1, 0x23, 0x31, 0xbd, 0xa8,
0x8a, 0xc5, 0x9e, 0xce, 0x66, 0x6b, 0x37, 0xec, 0x0e, 0x5d, 0xe4, 0xfc, 0xc5, 0x56, 0x0e, 0x15,
0xc0, 0xeb, 0xa2, 0xe9, 0x12, 0x00, 0xa1, 0x50, 0x48, 0x03, 0xba, 0x64, 0x3f, 0x07, 0x40, 0x59,
0x59, 0x19, 0x25, 0x24, 0xa6, 0xd0, 0xe9, 0xcc, 0x73, 0x14, 0x5d, 0x61, 0xa1, 0x3c, 0x9d, 0x87,
0x8a, 0xda, 0x02, 0x54, 0x62, 0x70, 0xd3, 0x21, 0x00, 0x28, 0x68, 0xb6, 0x53, 0x25, 0xf2, 0xa5,
0xd2, 0xd8, 0x47, 0xa9, 0x25, 0x6a, 0x2a, 0x6b, 0x32, 0x13, 0x76, 0x98, 0x19, 0x7b, 0xfc, 0xac,
0xb5, 0xcb, 0x4d, 0x16, 0x67, 0x80, 0xf5, 0xf8, 0x49, 0x6a, 0xe9, 0xe8, 0x65, 0x85, 0x55, 0x6a,
0x66, 0xb4, 0xbb, 0x42, 0xbd, 0x01, 0xf2, 0xd9, 0x3d, 0x82, 0x90, 0x5f, 0x59, 0x2f, 0x1e, 0x3e,
0x96, 0x40, 0x87, 0x22, 0xa3, 0x4d, 0x83, 0x38, 0x1f, 0x87, 0xbe, 0x64, 0xfb, 0xf8, 0xe3, 0x8f,
0x7b, 0x90, 0x41, 0xaf, 0x5d, 0x02, 0xc0, 0xe5, 0x72, 0x99, 0x51, 0x03, 0xe2, 0xcf, 0x01, 0xc0,
0xa9, 0x34, 0x33, 0x33, 0x9b, 0x8e, 0xfe, 0x18, 0x4f, 0xc9, 0x65, 0x3a, 0x92, 0xeb, 0x7d, 0xe1,
0xa6, 0xc5, 0xb9, 0x3d, 0x32, 0x4d, 0x41, 0x65, 0xfa, 0x3e, 0xd6, 0xd8, 0x85, 0x1a, 0xe8, 0xf2,
0xb1, 0xec, 0x8a, 0x26, 0xaa, 0x33, 0x3a, 0xc8, 0xd0, 0xed, 0x25, 0x83, 0x7d, 0x80, 0xf4, 0x5d,
0xfd, 0x64, 0xe9, 0xf3, 0xb2, 0xbe, 0x00, 0x49, 0x6d, 0x5d, 0x7d, 0xac, 0xbc, 0xbe, 0x19, 0xe7,
0xcc, 0xe7, 0x0c, 0x52, 0xc8, 0xdc, 0xe3, 0x16, 0x53, 0x73, 0x8a, 0xd9, 0xba, 0x75, 0xbb, 0xa9,
0x45, 0x63, 0xc8, 0x18, 0x04, 0x80, 0x12, 0xe9, 0xd3, 0x0e, 0xbd, 0xd4, 0x10, 0x2e, 0xe2, 0x8b,
0x01, 0xa0, 0x40, 0x7a, 0xd1, 0xb8, 0x7e, 0x16, 0x00, 0x4e, 0xa5, 0xd5, 0xd5, 0xd5, 0x14, 0x15,
0x73, 0x9a, 0x4e, 0x9e, 0xc9, 0xa3, 0xdc, 0x16, 0x17, 0x95, 0xb4, 0xf9, 0xc3, 0x29, 0x74, 0x38,
0x5d, 0x41, 0x4a, 0xa3, 0x93, 0x35, 0xd9, 0xfd, 0x54, 0xdb, 0xde, 0x4b, 0x72, 0x25, 0x3a, 0x77,
0x87, 0x93, 0xd9, 0x06, 0x04, 0x66, 0x75, 0xfa, 0xc9, 0xe4, 0x70, 0x51, 0x67, 0xbf, 0x8f, 0x75,
0x7b, 0x43, 0xcc, 0x64, 0xef, 0x23, 0xb5, 0xae, 0x4d, 0x72, 0x87, 0xc8, 0x0f, 0x13, 0x5b, 0xda,
0x3b, 0xa5, 0x03, 0x11, 0x31, 0xb4, 0x65, 0xcb, 0x01, 0xcf, 0x20, 0xce, 0xc7, 0xf3, 0xdd, 0x7f,
0xe7, 0x9d, 0x77, 0x9c, 0x4f, 0x3e, 0xf9, 0xe4, 0x0b, 0x97, 0x01, 0x30, 0x9b, 0xcd, 0x01, 0x34,
0xb2, 0x21, 0x01, 0x7c, 0xf7, 0xdd, 0x77, 0x74, 0xf8, 0xf0, 0xe1, 0x0b, 0x6b, 0x4c, 0x64, 0x34,
0x7f, 0xfe, 0x02, 0xda, 0xbb, 0xef, 0x18, 0xc5, 0xa6, 0xe4, 0x53, 0x5c, 0xa9, 0x8e, 0x8e, 0x64,
0x57, 0xd3, 0xb1, 0x8c, 0x32, 0x02, 0x35, 0x52, 0x42, 0x5e, 0x25, 0xa5, 0x16, 0x56, 0x53, 0xb6,
0xa2, 0x8e, 0x14, 0xf5, 0x3a, 0x42, 0x9a, 0x90, 0xa9, 0x07, 0xe9, 0xd3, 0x3b, 0x40, 0x0e, 0xb7,
0x9f, 0xba, 0x07, 0xfc, 0x64, 0xed, 0xe9, 0x27, 0xbd, 0xd5, 0x26, 0x7a, 0x44, 0x0a, 0xc0, 0xa4,
0x94, 0xac, 0x73, 0xb4, 0x62, 0xf9, 0x77, 0x54, 0x59, 0x59, 0x93, 0x33, 0x08, 0x80, 0x1a, 0xd0,
0x3c, 0xcf, 0xfd, 0x8a, 0x0b, 0x7d, 0x80, 0x03, 0x40, 0x41, 0x5a, 0x80, 0xac, 0xa5, 0xad, 0xad,
0x8d, 0xd5, 0xd5, 0xd5, 0x49, 0xeb, 0xd6, 0xad, 0x63, 0xaf, 0xbf, 0xfe, 0x3a, 0xa1, 0x0b, 0x12,
0xf8, 0x96, 0x26, 0x4f, 0x9e, 0x4c, 0x13, 0x27, 0x4e, 0x24, 0x8c, 0x8e, 0xc4, 0x7b, 0xc2, 0x8a,
0x15, 0x2b, 0xc2, 0x29, 0x04, 0xbd, 0x44, 0x2d, 0x2d, 0x2d, 0xb4, 0x68, 0xd1, 0x37, 0x74, 0x20,
0x22, 0x9a, 0x12, 0xb2, 0x4a, 0xa9, 0x08, 0x24, 0x1f, 0x5f, 0xd4, 0x88, 0x08, 0xf4, 0xb2, 0x16,
0xbb, 0x8f, 0x35, 0x98, 0x7a, 0xa8, 0xb8, 0x56, 0x4b, 0xb5, 0xad, 0x16, 0xc4, 0xbe, 0x95, 0x90,
0x22, 0x64, 0x73, 0x7a, 0xa8, 0xcf, 0x17, 0x62, 0x7d, 0xde, 0x20, 0x75, 0xf5, 0xbb, 0xc9, 0xd0,
0x61, 0x63, 0xee, 0x90, 0x28, 0xe4, 0x15, 0x56, 0xb2, 0xb5, 0xab, 0x77, 0xd2, 0x9e, 0x3d, 0x47,
0x74, 0x83, 0x38, 0x9f, 0x88, 0x26, 0xdb, 0x85, 0x21, 0xcb, 0xf5, 0x5b, 0x3c, 0x2e, 0x00, 0x40,
0x2e, 0x85, 0x01, 0x70, 0x01, 0x67, 0x32, 0x99, 0x42, 0x90, 0x0f, 0xc1, 0x1b, 0x6e, 0xb8, 0x81,
0xc9, 0x30, 0x2a, 0xfc, 0xd4, 0xae, 0xba, 0xea, 0x2a, 0x42, 0xe8, 0xc2, 0xe7, 0x18, 0xf6, 0xc9,
0x62, 0xb1, 0x40, 0x91, 0xc6, 0xd1, 0x82, 0x05, 0x0b, 0x28, 0x22, 0x22, 0x92, 0x76, 0xef, 0x46,
0x24, 0x92, 0xf3, 0x29, 0x19, 0xac, 0x73, 0xae, 0xc1, 0xc4, 0x4c, 0x6e, 0x92, 0xb4, 0x9d, 0x2e,
0xce, 0x32, 0x54, 0xdd, 0x6c, 0xa4, 0x06, 0xbd, 0x85, 0xda, 0x6c, 0xbd, 0xe1, 0xdd, 0xef, 0xf1,
0xf8, 0xa9, 0x3f, 0x10, 0xa2, 0x5e, 0x8f, 0x8f, 0x19, 0xac, 0x9d, 0x2c, 0xfe, 0x74, 0x16, 0x7d,
0xbb, 0x6c, 0x2b, 0xbd, 0xfe, 0xfa, 0xdb, 0x41, 0x90, 0xc9, 0x89, 0x41, 0x00, 0xd4, 0xa1, 0x3e,
0x79, 0xee, 0xe7, 0x5f, 0xd2, 0x89, 0xcf, 0x03, 0x40, 0xfe, 0x77, 0x62, 0x20, 0xf7, 0x20, 0x45,
0x3c, 0xd7, 0x5d, 0x77, 0xdd, 0xa0, 0x00, 0xae, 0xbe, 0xfa, 0x6a, 0xe2, 0xe0, 0xf9, 0xf9, 0xa2,
0x45, 0x8b, 0x08, 0x03, 0x3f, 0x61, 0x3a, 0x0b, 0x03, 0xfb, 0xfc, 0xf3, 0xcf, 0x41, 0xad, 0xb9,
0x6c, 0xff, 0x81, 0xe3, 0xd2, 0xa6, 0xcd, 0xfb, 0x29, 0x26, 0x21, 0x87, 0x14, 0xea, 0x76, 0xc6,
0xe9, 0xb2, 0xb4, 0xbe, 0x85, 0x6a, 0x34, 0x46, 0xd2, 0x59, 0xec, 0x8c, 0xa7, 0x8c, 0x3b, 0x28,
0x31, 0x87, 0xcb, 0x43, 0xed, 0x36, 0x07, 0x14, 0x6d, 0x0d, 0x8b, 0x38, 0x14, 0x43, 0x2b, 0x57,
0x7c, 0x47, 0xc7, 0x4f, 0x24, 0xd0, 0x9b, 0x6f, 0xbe, 0xeb, 0x1e, 0xc4, 0xf9, 0x24, 0x51, 0x14,
0x6d, 0x98, 0x49, 0x3c, 0xd8, 0xc0, 0x71, 0x83, 0x02, 0xc0, 0xee, 0x0f, 0x78, 0xf0, 0x80, 0xee,
0xe8, 0xbf, 0x12, 0x00, 0x9e, 0x52, 0xfc, 0xfc, 0xeb, 0xaf, 0xbf, 0xa6, 0xa8, 0xa8, 0x28, 0xfa,
0xe2, 0x8b, 0x2f, 0xc2, 0x6b, 0xd0, 0x1a, 0x2f, 0xea, 0xe0, 0xfa, 0xf5, 0xeb, 0x85, 0x7f, 0xb9,
0xf3, 0x6e, 0x5a, 0xbc, 0x78, 0x35, 0x5b, 0xb3, 0x66, 0x17, 0x1d, 0x3d, 0x91, 0x4c, 0x51, 0x71,
0xe9, 0x94, 0x90, 0x22, 0x67, 0x69, 0x60, 0x17, 0x79, 0x71, 0x15, 0xcb, 0xcc, 0x2d, 0xa1, 0x23,
0xc7, 0xe2, 0x69, 0xd5, 0x8a, 0xed, 0xb4, 0x6c, 0xe9, 0x16, 0xda, 0xbf, 0xff, 0x38, 0x29, 0x2a,
0x55, 0x74, 0x36, 0xaf, 0x98, 0x56, 0xac, 0xdc, 0xcc, 0x1a, 0x1a, 0x1a, 0x92, 0x7e, 0x02, 0xa0,
0x11, 0xea, 0xb7, 0x1d, 0xef, 0x9d, 0x76, 0x99, 0x98, 0xe3, 0x00, 0xb2, 0xb3, 0xb3, 0xad, 0x3a,
0x9d, 0x0e, 0x29, 0x26, 0xf9, 0x22, 0x22, 0x22, 0x7a, 0xae, 0x04, 0x60, 0xd3, 0xa6, 0x4d, 0xe1,
0xda, 0xe0, 0xce, 0x73, 0x4b, 0x4d, 0x4d, 0xa5, 0x77, 0xdf, 0x7d, 0x97, 0x4e, 0x9d, 0x3a, 0xc5,
0xf8, 0x9a, 0xcb, 0x8d, 0x0f, 0x3f, 0xfc, 0x50, 0x40, 0x6a, 0xf9, 0xcf, 0x24, 0xa5, 0x04, 0x4f,
0xc5, 0x25, 0x07, 0x17, 0xcc, 0x5f, 0x2e, 0x6d, 0xdc, 0xb8, 0x4b, 0x5c, 0xb8, 0x70, 0x35, 0x43,
0x9a, 0xf0, 0x3c, 0x87, 0xbe, 0xda, 0x43, 0xaa, 0x06, 0x2d, 0x59, 0xbb, 0x7b, 0x49, 0xad, 0xd1,
0x53, 0x4a, 0x66, 0x3e, 0x1d, 0x3a, 0x1c, 0x4b, 0x37, 0xdc, 0x30, 0x8a, 0xf1, 0x0f, 0x10, 0x2e,
0x72, 0x3e, 0x45, 0x10, 0x04, 0x1b, 0x57, 0xa5, 0xa8, 0xc5, 0xdf, 0x0c, 0x0a, 0x20, 0x33, 0x33,
0xd3, 0x8e, 0x39, 0x80, 0x0f, 0x30, 0xbe, 0x83, 0x07, 0x0f, 0xda, 0x47, 0x8e, 0x1c, 0x49, 0x43,
0x01, 0x38, 0x71, 0xe2, 0x04, 0x41, 0x62, 0x53, 0x74, 0x74, 0x74, 0x18, 0x00, 0x38, 0x99, 0xf4,
0x7a, 0x3d, 0x61, 0xd8, 0x0f, 0x03, 0x28, 0x2f, 0x2f, 0x27, 0x6c, 0xc4, 0x00, 0xc8, 0x20, 0x70,
0xe8, 0xd0, 0x21, 0xc2, 0x6c, 0x11, 0x42, 0x6a, 0x0e, 0xa0, 0x73, 0x7a, 0x20, 0xc2, 0x44, 0x30,
0x57, 0x30, 0x29, 0x29, 0x49, 0x40, 0x0f, 0x09, 0x55, 0xa8, 0x1a, 0xa8, 0x50, 0x51, 0x45, 0x7c,
0x24, 0xad, 0x6d, 0xd6, 0x50, 0x6a, 0x96, 0x9c, 0x7e, 0xf7, 0xbb, 0xf7, 0xbc, 0xff, 0xed, 0xb8,
0x14, 0x25, 0xfa, 0xfb, 0x39, 0x10, 0x4d, 0x4a, 0x4a, 0x4a, 0x3b, 0x5e, 0x7b, 0x72, 0x50, 0x39,
0x8d, 0xb0, 0x6c, 0x85, 0xba, 0x74, 0xf6, 0xf6, 0xf6, 0x06, 0xf9, 0xf4, 0xb5, 0x7f, 0xff, 0x7e,
0x27, 0x22, 0x30, 0x24, 0x00, 0xee, 0x38, 0xc6, 0x4b, 0xc2, 0x90, 0x4f, 0x19, 0x19, 0x19, 0x64,
0x30, 0x18, 0xc2, 0x00, 0xf8, 0x88, 0xc9, 0x01, 0xa0, 0xb0, 0xf9, 0x7d, 0xdc, 0x88, 0xaa, 0xc8,
0xd7, 0xe8, 0x1b, 0x8c, 0xaf, 0x51, 0x2f, 0xc1, 0x49, 0x93, 0x26, 0x11, 0x18, 0x4e, 0x00, 0x51,
0x48, 0x00, 0xe8, 0xcb, 0xcd, 0x2d, 0x08, 0xfd, 0xf8, 0x63, 0x94, 0x98, 0x90, 0x94, 0x46, 0xda,
0xb6, 0x36, 0x3a, 0x93, 0x7a, 0x36, 0xcc, 0x66, 0xc7, 0xb7, 0xcf, 0x11, 0xea, 0xf7, 0xde, 0xe1,
0xb5, 0x9c, 0x7e, 0xce, 0x1a, 0x08, 0x04, 0x3a, 0xb1, 0xc9, 0x5e, 0x74, 0xdd, 0xbb, 0x86, 0x04,
0x80, 0x1b, 0xfa, 0xfc, 0x7e, 0x3f, 0x7f, 0x63, 0xfb, 0xee, 0xdd, 0xbb, 0x85, 0x2b, 0x45, 0x00,
0x8e, 0xb3, 0xac, 0xac, 0x2c, 0x91, 0x47, 0x02, 0xfd, 0x83, 0xd0, 0x37, 0x58, 0x63, 0x63, 0xa3,
0x84, 0x5d, 0xe5, 0xe9, 0x23, 0x71, 0x67, 0x07, 0xf0, 0xc0, 0x10, 0x14, 0x06, 0x64, 0x34, 0x1a,
0x05, 0xbe, 0xe6, 0x80, 0xce, 0x03, 0x00, 0x58, 0x86, 0xb4, 0x70, 0x43, 0x22, 0xfb, 0x11, 0x21,
0x61, 0xe5, 0xca, 0x0d, 0x52, 0x4a, 0x86, 0x9c, 0x6a, 0x0b, 0x8f, 0x92, 0x72, 0xcf, 0xfd, 0xd4,
0x16, 0x79, 0x1b, 0x39, 0x61, 0x6d, 0xdb, 0x64, 0x94, 0x79, 0x6c, 0xb1, 0x1d, 0x85, 0xfb, 0xc3,
0x90, 0x13, 0x19, 0x07, 0x90, 0x98, 0xc8, 0x29, 0x56, 0x0a, 0xa2, 0x17, 0x58, 0x77, 0x62, 0xd2,
0x1a, 0x2a, 0x02, 0xd7, 0x5c, 0x73, 0x0d, 0xad, 0x5c, 0xb9, 0x92, 0x71, 0xd6, 0x59, 0xbd, 0x7a,
0x35, 0x43, 0xd1, 0x86, 0x40, 0xa7, 0xd2, 0x1f, 0x59, 0x28, 0x87, 0x21, 0xf7, 0x43, 0xc3, 0x86,
0x0d, 0xa3, 0x59, 0xb3, 0x66, 0x11, 0x9c, 0xe6, 0xd1, 0xf1, 0x8e, 0x1a, 0x35, 0x8a, 0x71, 0xf6,
0xe2, 0x00, 0xf0, 0x3a, 0x09, 0xd7, 0xf1, 0x74, 0xe5, 0x6c, 0xe3, 0x87, 0xa6, 0x12, 0x8e, 0xec,
0xf8, 0x86, 0xa9, 0x7e, 0x78, 0x82, 0x5a, 0x4e, 0xbd, 0x42, 0xfe, 0xc6, 0x6d, 0x68, 0x57, 0x6f,
0x52, 0x20, 0xf9, 0xdf, 0xa9, 0x6f, 0xcf, 0x48, 0x2a, 0x5d, 0x37, 0x82, 0x7d, 0xfc, 0xfa, 0x43,
0x43, 0x7e, 0x58, 0x2c, 0x43, 0x68, 0x22, 0x4e, 0x9f, 0x3e, 0xcd, 0xc3, 0x2c, 0xc0, 0x0c, 0x7b,
0xf7, 0xee, 0xf5, 0x5f, 0x09, 0x00, 0x66, 0xd4, 0x70, 0x81, 0x2f, 0x59, 0xb2, 0x84, 0x39, 0x1c,
0x8e, 0xd0, 0xfc, 0xf9, 0xf3, 0xc3, 0xcf, 0xbd, 0xf8, 0xe2, 0x8b, 0x84, 0x2e, 0x29, 0x2c, 0x5c,
0xb8, 0x30, 0xbc, 0x7e, 0xe8, 0xa1, 0x87, 0x78, 0x84, 0x78, 0x1a, 0x05, 0xf9, 0xfa, 0xce, 0x3b,
0xef, 0x0c, 0x37, 0xc4, 0xaf, 0xbe, 0xfa, 0x8a, 0xa1, 0x1e, 0xfc, 0x48, 0x0d, 0x2f, 0x48, 0x4f,
0x2c, 0xcc, 0x8e, 0x17, 0xcf, 0xad, 0x1a, 0x46, 0x3d, 0xa5, 0x73, 0x48, 0x1c, 0xd0, 0x13, 0xb9,
0xd4, 0x44, 0xad, 0x9b, 0x49, 0x2a, 0x7e, 0x9e, 0xbc, 0x31, 0x77, 0x93, 0x65, 0xb3, 0x8c, 0xea,
0x36, 0xcb, 0xb6, 0x0c, 0x09, 0x00, 0xc5, 0x81, 0xfa, 0x4b, 0xe7, 0x3b, 0xc2, 0xa7, 0x1f, 0x03,
0x2f, 0xe2, 0xa1, 0x58, 0x88, 0x03, 0x40, 0x37, 0x16, 0xf9, 0x39, 0x86, 0x9e, 0x90, 0xd3, 0xe9,
0x0c, 0x2c, 0x5f, 0xbe, 0x3c, 0xc4, 0xd7, 0xe8, 0xdc, 0xe1, 0xf4, 0x39, 0x72, 0xe4, 0x88, 0x9f,
0xaf, 0x1f, 0x7c, 0xf0, 0x41, 0x0e, 0x48, 0xdc, 0xb3, 0x67, 0x4f, 0xf8, 0xfa, 0x5b, 0x6f, 0xbd,
0x35, 0x1c, 0x01, 0xd0, 0x2e, 0x43, 0x51, 0xfb, 0x50, 0x3b, 0x8c, 0x77, 0x72, 0x14, 0xa8, 0xf4,
0xfd, 0x97, 0x0f, 0x51, 0xdb, 0xa9, 0x71, 0x14, 0x6c, 0x8f, 0x21, 0x62, 0xb8, 0x8d, 0x3d, 0x93,
0xa8, 0xe1, 0x4b, 0x0a, 0x65, 0x4f, 0x26, 0xf7, 0xa1, 0x7f, 0xa4, 0xe6, 0x4d, 0x32, 0xb1, 0x7e,
0x93, 0xec, 0xc1, 0xa1, 0x22, 0x20, 0x07, 0x15, 0x8a, 0x48, 0x1f, 0x5e, 0x03, 0x7e, 0x34, 0x32,
0x1f, 0x6a, 0x60, 0xc8, 0x4e, 0x0c, 0x16, 0x11, 0x38, 0x10, 0xfe, 0x69, 0x05, 0x77, 0xb8, 0xa4,
0xa4, 0xc4, 0xcb, 0xff, 0x0f, 0x81, 0xc7, 0xb5, 0xbb, 0x1b, 0x33, 0xb4, 0xef, 0xda, 0x6b, 0xaf,
0x45, 0x43, 0x7a, 0x53, 0xe2, 0x1f, 0xf8, 0xa2, 0x3e, 0xd8, 0xed, 0xb7, 0xdf, 0xce, 0x78, 0x5d,
0x01, 0x04, 0x03, 0x01, 0x04, 0x51, 0x73, 0x2c, 0x26, 0x26, 0x86, 0x7a, 0x7a, 0x7a, 0x58, 0x71,
0x71, 0x31, 0x7b, 0x79, 0xfa, 0x0b, 0x52, 0xd6, 0x8a, 0x1b, 0x43, 0xee, 0x8a, 0xcf, 0x49, 0xe8,
0x2e, 0x83, 0x17, 0x56, 0x22, 0xd3, 0x21, 0xe8, 0xce, 0x99, 0xe4, 0x4f, 0xbc, 0x9f, 0x1c, 0xdf,
0x0f, 0xa7, 0xea, 0xf5, 0x32, 0xe8, 0x1f, 0xd9, 0x55, 0x97, 0x01, 0x40, 0x81, 0xec, 0x02, 0x2d,
0xfa, 0xd0, 0x07, 0x44, 0x38, 0x13, 0xc4, 0xe8, 0x18, 0x18, 0xaa, 0x88, 0xaf, 0xbf, 0xfe, 0x7a,
0x1a, 0x33, 0x66, 0x4c, 0xf8, 0x88, 0x7e, 0x10, 0x82, 0xa0, 0x0b, 0x70, 0xe3, 0x80, 0xa0, 0x8f,
0x82, 0xfc, 0x1c, 0x11, 0x91, 0x6e, 0xb9, 0xe5, 0x16, 0xf6, 0xe9, 0xa7, 0x9f, 0x86, 0xde, 0x7a,
0xeb, 0x2d, 0xb6, 0x74, 0xe9, 0x52, 0x81, 0x4b, 0x8d, 0xd1, 0xa3, 0x47, 0xd3, 0x88, 0x11, 0x23,
0x68, 0xc3, 0x86, 0x0d, 0x41, 0xd4, 0x91, 0xc8, 0x47, 0x53, 0xc8, 0x17, 0x01, 0xef, 0xc9, 0xbb,
0xbb, 0x74, 0x6a, 0xcf, 0xdc, 0x5a, 0xd5, 0xae, 0xdb, 0xc8, 0xaf, 0xdd, 0x45, 0x92, 0xdf, 0x46,
0xe4, 0x84, 0xbf, 0xda, 0x55, 0x24, 0x16, 0x4c, 0x21, 0xcf, 0xf1, 0x3b, 0x48, 0xbf, 0x41, 0x46,
0x95, 0xeb, 0x65, 0x5f, 0x0c, 0x16, 0x01, 0xde, 0xc8, 0xb8, 0x1a, 0xad, 0x42, 0x03, 0x49, 0x85,
0x23, 0x7a, 0xec, 0xe0, 0x65, 0x11, 0xe0, 0x75, 0x81, 0x6e, 0x2b, 0xa1, 0x48, 0xc3, 0xbb, 0x09,
0x09, 0xc1, 0x60, 0x12, 0x3a, 0x72, 0x38, 0x22, 0x9f, 0x7d, 0xf6, 0x59, 0x68, 0xee, 0xdc, 0xb9,
0x41, 0xa4, 0x88, 0x70, 0xe3, 0x8d, 0x37, 0x32, 0x44, 0x20, 0xf4, 0xde, 0x7b, 0xef, 0x89, 0x48,
0x39, 0x36, 0x6d, 0xda, 0x34, 0x5a, 0xb3, 0x66, 0x4d, 0x58, 0x24, 0xbe, 0xfd, 0xf6, 0xdb, 0xfc,
0x5a, 0x11, 0x8c, 0xc5, 0xc0, 0x42, 0x0c, 0x00, 0x18, 0x36, 0x51, 0x54, 0xa9, 0x54, 0x49, 0x19,
0x1b, 0x27, 0x58, 0x3b, 0xd2, 0x9e, 0xa3, 0xa0, 0x35, 0x05, 0x6d, 0xc0, 0x4f, 0xd4, 0x99, 0x08,
0x05, 0xf4, 0x21, 0x05, 0xd3, 0xc7, 0x93, 0x73, 0xff, 0x28, 0xaa, 0x59, 0x2b, 0x73, 0x2b, 0xd7,
0xca, 0x7e, 0x3d, 0x24, 0x00, 0xde, 0x40, 0xd0, 0x98, 0x12, 0xa7, 0x4c, 0x99, 0x62, 0xc4, 0xff,
0xf9, 0xd0, 0x6c, 0x81, 0x75, 0xc3, 0xdc, 0xef, 0xbf, 0xff, 0x7e, 0x00, 0xb5, 0x22, 0x3d, 0xfe,
0xf8, 0xe3, 0x22, 0x1c, 0x92, 0x00, 0x96, 0x53, 0x21, 0x2f, 0x7e, 0xc6, 0x77, 0x96, 0xd7, 0x03,
0xce, 0xb9, 0x86, 0x77, 0x73, 0x30, 0x4f, 0x3c, 0xf1, 0x84, 0xc8, 0xe9, 0x93, 0xaf, 0x91, 0xef,
0x12, 0xd8, 0x28, 0x80, 0x9a, 0x08, 0xf2, 0x7b, 0xf0, 0x5e, 0x82, 0xbe, 0xc0, 0xbc, 0x5e, 0x2f,
0xc3, 0x0c, 0xce, 0xa0, 0x71, 0x06, 0x10, 0x8d, 0xe8, 0x12, 0x79, 0x4a, 0xad, 0xfc, 0xf7, 0xa3,
0x24, 0x6f, 0xed, 0x32, 0x12, 0x9d, 0xf5, 0xb8, 0x1b, 0x44, 0xa9, 0x71, 0x17, 0xb1, 0xb2, 0xe9,
0xe4, 0x8b, 0xfb, 0x37, 0xb2, 0x6e, 0xbe, 0x9a, 0x4a, 0x56, 0xc9, 0xe2, 0xaf, 0x08, 0x00, 0xa2,
0xee, 0x24, 0x86, 0xf7, 0x22, 0xe4, 0xf4, 0x65, 0x36, 0x61, 0xc2, 0x84, 0x8e, 0x71, 0xe3, 0xc6,
0xf5, 0x54, 0x56, 0x56, 0x36, 0xe1, 0x8d, 0xfb, 0xf0, 0x3a, 0x06, 0x85, 0x48, 0xc3, 0x87, 0x0f,
0xe7, 0x0d, 0x8c, 0x41, 0x70, 0x71, 0x40, 0x38, 0x88, 0x41, 0xec, 0xb4, 0x88, 0x7b, 0x8b, 0xc8,
0x75, 0x1f, 0xf4, 0x95, 0x00, 0x89, 0x22, 0xc2, 0x71, 0x3f, 0x5f, 0xe3, 0xe8, 0xeb, 0xec, 0xec,
0xf4, 0x82, 0x89, 0x18, 0x9f, 0xad, 0x67, 0xcc, 0x98, 0xd1, 0x87, 0xd7, 0x45, 0x77, 0x75, 0x75,
0x75, 0xae, 0xfe, 0x64, 0xb2, 0x5b, 0x7d, 0xf0, 0x6e, 0x0a, 0xe8, 0x23, 0x89, 0x09, 0x60, 0xda,
0x9e, 0x02, 0xa2, 0xa6, 0x6f, 0x48, 0xc8, 0xfd, 0x2d, 0x0d, 0x1c, 0xb9, 0x9d, 0xd4, 0x6b, 0x64,
0x54, 0xb8, 0x42, 0x36, 0x6d, 0x48, 0x00, 0x70, 0x2c, 0x15, 0xbb, 0x6c, 0x1e, 0xcc, 0xa0, 0xc5,
0x35, 0xa0, 0xbe, 0x98, 0xf3, 0x3a, 0x05, 0x8e, 0xc6, 0x60, 0x86, 0x28, 0xc4, 0x84, 0xe4, 0xe3,
0x60, 0xb8, 0x33, 0xfc, 0x43, 0x31, 0xbe, 0xe3, 0x28, 0x50, 0x61, 0xf1, 0xe2, 0xc5, 0xd2, 0xcc,
0x99, 0x33, 0x19, 0x1c, 0x64, 0xd3, 0xa7, 0x4f, 0x67, 0x5c, 0x43, 0xf1, 0xe8, 0x61, 0x2d, 0x80,
0xff, 0x39, 0x09, 0x48, 0x5c, 0x82, 0xa0, 0x56, 0x3a, 0x71, 0x5e, 0x02, 0x76, 0x32, 0x3d, 0xf2,
0xc8, 0x23, 0xf6, 0x98, 0xcf, 0x64, 0x75, 0x0e, 0xf9, 0x1b, 0x14, 0xb2, 0xe5, 0x11, 0x85, 0x80,
0xcd, 0x02, 0x75, 0x5d, 0x33, 0x2b, 0xdc, 0x1b, 0x7a, 0x76, 0x8e, 0xa4, 0x92, 0xe5, 0x32, 0x53,
0xfa, 0x5a, 0xd9, 0xc8, 0x30, 0x00, 0x14, 0xd0, 0x56, 0x74, 0xd6, 0x0b, 0x00, 0xfe, 0xa7, 0x86,
0x94, 0x4a, 0x01, 0xeb, 0x58, 0x78, 0x67, 0x45, 0x1a, 0x06, 0x90, 0xd3, 0xa2, 0x5c, 0x2e, 0x67,
0x58, 0x33, 0x30, 0x93, 0x00, 0xca, 0x14, 0x90, 0x26, 0x62, 0x30, 0x18, 0x64, 0xd8, 0x04, 0xc2,
0x51, 0x00, 0xf3, 0xf1, 0x8f, 0x2f, 0xd9, 0xb2, 0x65, 0xcb, 0x5a, 0x70, 0x8f, 0x8e, 0x39, 0x73,
0xe6, 0xd8, 0x1e, 0x7e, 0xf8, 0xe1, 0xd9, 0xb3, 0xc6, 0xcb, 0x5e, 0x91, 0xff, 0xfe, 0x57, 0x82,
0xaf, 0x71, 0x23, 0x49, 0xe1, 0xde, 0x80, 0x74, 0x6a, 0xdd, 0x84, 0xde, 0x30, 0x95, 0xbc, 0xd1,
0x77, 0x51, 0xeb, 0x3a, 0x19, 0xe5, 0x2e, 0x91, 0x6d, 0xfb, 0x29, 0x00, 0x74, 0x10, 0x4a, 0xfd,
0xdf, 0x1a, 0x80, 0x14, 0xc3, 0xf9, 0x5e, 0x48, 0x8c, 0x10, 0x4a, 0x20, 0x2c, 0x51, 0x90, 0x1a,
0x1e, 0xad, 0x56, 0xeb, 0xe1, 0x8d, 0x4e, 0xa1, 0x50, 0x70, 0x40, 0x12, 0x76, 0x9b, 0x37, 0x42,
0xfe, 0x29, 0x9f, 0x84, 0x02, 0xb7, 0x41, 0x72, 0xb4, 0xa3, 0x6e, 0x0c, 0xfc, 0xfb, 0x0a, 0x90,
0xc6, 0x98, 0x1d, 0xb3, 0x64, 0x3f, 0x68, 0xa2, 0x1e, 0x41, 0x6f, 0xe0, 0x7a, 0x0e, 0x99, 0x69,
0xc7, 0x7c, 0xaf, 0x46, 0x6f, 0xc8, 0x9a, 0x4c, 0x7d, 0x07, 0x6f, 0xa1, 0x82, 0xa5, 0x57, 0x89,
0x79, 0xcb, 0x64, 0x0f, 0xc9, 0xf0, 0xa2, 0xe5, 0xc8, 0x6f, 0x2b, 0xff, 0x32, 0x0f, 0x6f, 0xf8,
0x8b, 0x19, 0x52, 0xc8, 0xc1, 0x27, 0x3c, 0x38, 0x2a, 0xb9, 0x5c, 0x2e, 0x91, 0x77, 0x5d, 0x58,
0x00, 0xcf, 0x79, 0xf1, 0x5c, 0x00, 0xa0, 0xf8, 0x73, 0x22, 0xc4, 0xa3, 0x1f, 0xfa, 0x6b, 0xe0,
0xa3, 0x8f, 0x3e, 0xb2, 0x8f, 0x1f, 0x3f, 0xfe, 0x8d, 0xf0, 0xae, 0xca, 0x64, 0xd7, 0x8c, 0xbe,
0x51, 0xf6, 0x48, 0xfc, 0x97, 0x57, 0x5b, 0xfb, 0xcb, 0xfe, 0xd8, 0x1b, 0xc4, 0xd6, 0xbd, 0xa4,
0x3b, 0x76, 0x3f, 0xa5, 0x2f, 0xbd, 0x99, 0x0e, 0x2c, 0x7d, 0xde, 0x96, 0xb0, 0x56, 0x36, 0x9c,
0xf7, 0x81, 0xdb, 0x21, 0x0f, 0x4a, 0xc0, 0x3c, 0x36, 0x6e, 0xd0, 0x46, 0x17, 0x0c, 0x5d, 0xfa,
0x12, 0x43, 0xbd, 0x5c, 0x62, 0x78, 0xed, 0x25, 0x86, 0x68, 0x5e, 0x30, 0x6c, 0xcc, 0x79, 0x73,
0x72, 0x46, 0xc2, 0xf5, 0x12, 0xf2, 0x5f, 0x04, 0xe3, 0x88, 0x90, 0x1d, 0xc1, 0xa9, 0x53, 0xa7,
0xfa, 0xb8, 0x7d, 0xf0, 0xc1, 0x07, 0x03, 0xe8, 0x09, 0x56, 0x5c, 0xd3, 0x04, 0xc7, 0x2f, 0x34,
0x2a, 0x3c, 0x46, 0xcd, 0x7b, 0x4e, 0x36, 0xbb, 0x74, 0xcb, 0x6d, 0xe4, 0x69, 0xdc, 0x4e, 0x9a,
0xec, 0xf5, 0x94, 0xbe, 0xe2, 0x6e, 0x4a, 0x8b, 0x98, 0x43, 0xc7, 0xa3, 0x4e, 0x42, 0x14, 0x6e,
0x69, 0xfd, 0xab, 0xfd, 0xd4, 0x80, 0xa7, 0xc5, 0xc4, 0x89, 0x13, 0x3f, 0x79, 0xec, 0xb1, 0xc7,
0xba, 0xd0, 0xc9, 0x3b, 0x40, 0xb9, 0xd6, 0x3f, 0x7c, 0xa1, 0x02, 0x8a, 0x21, 0x1b, 0x84, 0x5f,
0xcf, 0xa3, 0x8f, 0x3e, 0x3a, 0xfd, 0xb2, 0x26, 0x25, 0x93, 0xdd, 0x15, 0xf1, 0xae, 0x2c, 0x3d,
0x69, 0xd1, 0x4d, 0x62, 0x6d, 0xe6, 0x7a, 0xd2, 0xea, 0x35, 0x54, 0x58, 0xa6, 0xa4, 0xe3, 0xd1,
0x09, 0xf4, 0xed, 0xb7, 0x2b, 0x16, 0xfe, 0xd5, 0x7f, 0x2b, 0x31, 0x76, 0xec, 0xd8, 0x11, 0xa0,
0xe2, 0x6f, 0x00, 0xc4, 0x09, 0x8d, 0x64, 0x41, 0x4a, 0x59, 0x41, 0xc9, 0x46, 0x30, 0x9c, 0x72,
0x50, 0x9d, 0x23, 0x93, 0x0d, 0x7f, 0x70, 0xb4, 0xec, 0xf1, 0x09, 0x63, 0x7f, 0xf5, 0xd4, 0xf7,
0x3b, 0x77, 0xc6, 0xc7, 0x25, 0x24, 0xda, 0x22, 0x22, 0x8f, 0xb4, 0xcd, 0x9d, 0x3b, 0x6f, 0xcd,
0xf9, 0x68, 0xfd, 0x4d, 0x7e, 0xa0, 0x81, 0x74, 0xb9, 0x01, 0xc2, 0x6e, 0x03, 0xa2, 0xe2, 0xc5,
0x71, 0x00, 0xa0, 0x26, 0x0c, 0xa9, 0x36, 0x65, 0xb2, 0x61, 0xb0, 0x11, 0xb0, 0x3b, 0x60, 0xff,
0xca, 0x0b, 0x1c, 0x76, 0xed, 0xdf, 0xc5, 0xaf, 0x55, 0x1e, 0x78, 0xe0, 0x81, 0xe1, 0x3f, 0xfd,
0xc2, 0xe2, 0xcf, 0xb5, 0xff, 0x02, 0x32, 0xee, 0xa6, 0x45, 0xe4, 0x1e, 0x1c, 0xf3, 0x00, 0x00,
0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE icon_gerbview_xpm[1] = {{ png, sizeof( png ), "icon_gerbview_xpm" }};

View File

@ -8,150 +8,148 @@
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x08, 0x06, 0x00, 0x00, 0x00, 0x57, 0x02, 0xf9,
0x87, 0x00, 0x00, 0x08, 0xdd, 0x49, 0x44, 0x41, 0x54, 0x68, 0xde, 0xd5, 0x9a, 0x7b, 0x70, 0xd4,
0xd5, 0x15, 0xc7, 0x3f, 0xf7, 0xb7, 0xef, 0x4d, 0x36, 0x4f, 0x76, 0x09, 0x81, 0x54, 0xe3, 0x23,
0x8a, 0xbc, 0x44, 0x50, 0x08, 0x19, 0x2b, 0x38, 0x88, 0xa2, 0x62, 0xa7, 0xce, 0xd8, 0xd1, 0x3a,
0x32, 0x2a, 0x15, 0xa8, 0x0f, 0xd4, 0x76, 0x6a, 0xa5, 0x76, 0xb4, 0x0c, 0x8f, 0x8e, 0xa3, 0x08,
0x3e, 0x80, 0x16, 0x14, 0xa8, 0x4a, 0x9d, 0x5a, 0xc5, 0xb1, 0x38, 0x6a, 0xb4, 0x88, 0x55, 0x29,
0xa9, 0x42, 0x19, 0x14, 0x2d, 0x6d, 0xa4, 0x80, 0x26, 0x46, 0x24, 0xca, 0xee, 0x66, 0xf3, 0xd8,
0xec, 0xee, 0x3d, 0xfd, 0x23, 0x6c, 0xf2, 0xdb, 0xf7, 0x2e, 0x4d, 0xa6, 0xf6, 0x37, 0x73, 0x66,
0x7e, 0x7b, 0x9f, 0xe7, 0x75, 0xbf, 0xe7, 0x9c, 0xfb, 0x5b, 0x25, 0x22, 0xfc, 0x3f, 0x3f, 0xd6,
0xe4, 0x86, 0xf7, 0xd6, 0xa9, 0x72, 0x97, 0x85, 0xe1, 0x83, 0xb9, 0x49, 0xd4, 0x20, 0x34, 0xe5,
0x47, 0xd2, 0x92, 0x6d, 0xcc, 0xfb, 0x1b, 0x54, 0x9d, 0x45, 0x30, 0x72, 0xad, 0x15, 0xb1, 0xd3,
0x33, 0xf5, 0x46, 0x39, 0x1c, 0xff, 0xad, 0xe2, 0x16, 0xd8, 0xb9, 0x51, 0x79, 0xac, 0x31, 0x16,
0xa3, 0x58, 0x04, 0x14, 0x0d, 0x81, 0xb2, 0x3e, 0x14, 0x78, 0xbe, 0xc7, 0xca, 0xca, 0xe9, 0x37,
0x4a, 0x8f, 0xb9, 0xa3, 0x69, 0x83, 0x7a, 0x44, 0x29, 0xee, 0x2e, 0x60, 0xad, 0x9d, 0xdd, 0xad,
0x4c, 0x9f, 0xfe, 0x80, 0x44, 0xfb, 0x25, 0x56, 0x31, 0xee, 0xd4, 0xb0, 0x58, 0x0b, 0x45, 0x5a,
0x60, 0x08, 0x68, 0xbc, 0x08, 0xcb, 0x9c, 0x11, 0x76, 0xbc, 0xbb, 0x49, 0x79, 0x93, 0x18, 0xaa,
0x2f, 0x70, 0xad, 0x06, 0xfb, 0x48, 0xbe, 0x9b, 0xe8, 0x42, 0xc2, 0xbc, 0xf8, 0x69, 0x70, 0x94,
0x4d, 0xc0, 0xe2, 0x1c, 0x31, 0xa8, 0xea, 0xef, 0x69, 0x7f, 0x17, 0x1d, 0xed, 0x44, 0x60, 0xaa,
0x35, 0xc2, 0xdf, 0x76, 0xad, 0x57, 0x97, 0xd7, 0xcf, 0x97, 0x03, 0x00, 0xa2, 0x59, 0x22, 0x8a,
0x17, 0x01, 0x77, 0xbe, 0xeb, 0x29, 0x8d, 0x3d, 0x41, 0x00, 0x2d, 0xf4, 0x73, 0xec, 0x39, 0x6d,
0x21, 0xc5, 0xd5, 0x57, 0x0d, 0xaa, 0x00, 0xe1, 0xc0, 0x7e, 0xbe, 0x7c, 0x7f, 0x2e, 0xb1, 0x9e,
0xa3, 0x00, 0xb5, 0xc0, 0xae, 0x9d, 0xeb, 0xd5, 0xd5, 0x0d, 0xf3, 0x65, 0x47, 0xfd, 0x02, 0x79,
0xfd, 0xaf, 0x1b, 0xd4, 0x74, 0xad, 0xd9, 0x06, 0x85, 0x9d, 0xbf, 0x7e, 0x17, 0x12, 0x6d, 0x26,
0x41, 0x44, 0xb0, 0x58, 0x2c, 0xb8, 0x5c, 0xae, 0xbc, 0x48, 0x02, 0x47, 0x39, 0xbe, 0xfb, 0x75,
0x08, 0x7d, 0x9d, 0xd2, 0x67, 0xb5, 0x5a, 0xb1, 0x97, 0x8c, 0xa1, 0xba, 0xe1, 0x15, 0x6c, 0xc5,
0xa3, 0xe3, 0xfb, 0x94, 0xe9, 0x18, 0x8d, 0xef, 0xae, 0x55, 0x37, 0x02, 0x4c, 0xbb, 0x45, 0x3e,
0x88, 0x0a, 0x53, 0x45, 0xf8, 0x44, 0x04, 0x72, 0x51, 0x8a, 0x00, 0x89, 0x3e, 0x26, 0x68, 0xad,
0xb1, 0xd9, 0x6c, 0x78, 0x3c, 0x9e, 0xbc, 0xa8, 0xe3, 0x40, 0x13, 0x7b, 0x57, 0xce, 0xa7, 0xe7,
0xc8, 0x47, 0x29, 0x7d, 0xe5, 0xe5, 0xe5, 0x38, 0x9d, 0x4e, 0x2c, 0xce, 0x2a, 0x46, 0x34, 0x6c,
0xc5, 0xe9, 0xbd, 0x28, 0xbe, 0x97, 0x4d, 0xc3, 0xa6, 0xb7, 0xd7, 0xaa, 0x65, 0xa0, 0xd4, 0xf4,
0x85, 0x72, 0x38, 0x6c, 0x30, 0x4d, 0x60, 0x7b, 0x2e, 0x01, 0xa2, 0xb1, 0x64, 0x0b, 0x24, 0x0c,
0x90, 0x82, 0x29, 0xae, 0x96, 0x74, 0xf3, 0x01, 0x4a, 0x4a, 0x4a, 0x28, 0x2a, 0x2a, 0x02, 0xc3,
0x8d, 0xef, 0xfc, 0x8d, 0x78, 0xbe, 0xf3, 0xc3, 0x01, 0x6d, 0x0a, 0xf7, 0xbd, 0xbd, 0x86, 0xdf,
0xbf, 0xf6, 0xb8, 0x72, 0xcc, 0x9c, 0x2f, 0x81, 0x22, 0x83, 0xd9, 0x31, 0xcd, 0x26, 0xad, 0x21,
0x13, 0x65, 0xb5, 0x80, 0x99, 0x89, 0xc1, 0x7c, 0x8a, 0x8b, 0x8b, 0x29, 0x2d, 0x2d, 0x45, 0x29,
0x2b, 0x95, 0xe3, 0x56, 0x50, 0x7e, 0xf6, 0xbd, 0x68, 0x51, 0xf1, 0x7d, 0xaf, 0x75, 0x28, 0xb6,
0xbf, 0xbd, 0x5e, 0x0d, 0x9b, 0x34, 0x5f, 0x22, 0x33, 0x6e, 0x93, 0x9b, 0x11, 0x7e, 0x69, 0xd6,
0x4f, 0x56, 0x17, 0x32, 0x77, 0x6a, 0xad, 0xd1, 0x5a, 0x17, 0x66, 0x85, 0xfe, 0x75, 0xb2, 0x8f,
0x73, 0xb9, 0x5c, 0x54, 0x54, 0x54, 0xa0, 0x94, 0xa2, 0xf4, 0xf4, 0x05, 0xf8, 0xce, 0x7b, 0x02,
0x94, 0x23, 0xbe, 0x77, 0x43, 0x2c, 0x4c, 0xd3, 0xf6, 0x35, 0xaa, 0x0e, 0x60, 0xfa, 0xed, 0xb2,
0x5c, 0x84, 0xeb, 0xb5, 0x10, 0x4e, 0x86, 0xd2, 0x58, 0x34, 0x4f, 0x0b, 0x14, 0xe4, 0x46, 0x27,
0xf0, 0x38, 0xd7, 0x38, 0x9b, 0xcd, 0x46, 0x65, 0x65, 0x25, 0x86, 0x61, 0xe0, 0xae, 0xba, 0x8c,
0xaa, 0xa9, 0x5b, 0x50, 0xb6, 0x8a, 0xf8, 0xfe, 0xa7, 0xeb, 0x18, 0xbb, 0xde, 0x7c, 0x5c, 0x5d,
0x04, 0x70, 0xf1, 0x1d, 0xf2, 0x9c, 0x08, 0x33, 0x45, 0xf8, 0x3a, 0xc9, 0x0a, 0x92, 0x19, 0x85,
0x52, 0x98, 0x1a, 0x82, 0x1c, 0xc6, 0x6a, 0xc5, 0xeb, 0xf5, 0x62, 0xb7, 0xdb, 0x71, 0x94, 0x9d,
0x4b, 0x75, 0xc3, 0x8b, 0x58, 0xdd, 0xa7, 0xc5, 0x79, 0xa8, 0x90, 0x18, 0x6f, 0x34, 0xae, 0x56,
0x37, 0x00, 0xcc, 0x5c, 0x24, 0xef, 0x49, 0x5f, 0xb0, 0xdb, 0xaf, 0x05, 0xd1, 0xc2, 0xc1, 0x88,
0xc1, 0xae, 0xcc, 0x28, 0xa4, 0x25, 0x6f, 0x17, 0xea, 0x68, 0x3d, 0x48, 0xd3, 0xf2, 0xb9, 0x1c,
0x7a, 0x6d, 0x33, 0x00, 0xcd, 0x2f, 0xad, 0xa5, 0x69, 0xf9, 0x5c, 0xba, 0xda, 0xbf, 0xc8, 0x39,
0x57, 0x29, 0x45, 0x65, 0x65, 0x65, 0x1f, 0xd4, 0xba, 0x46, 0x51, 0xdd, 0xf0, 0x3c, 0x8e, 0x8a,
0xf3, 0xe3, 0x7c, 0xd8, 0x45, 0x78, 0xba, 0x71, 0x95, 0x5a, 0x02, 0x70, 0xc9, 0x22, 0x69, 0x9e,
0x75, 0xa7, 0x8c, 0x0b, 0xf8, 0x71, 0x56, 0xba, 0x18, 0x3d, 0xfb, 0x0e, 0x09, 0x26, 0xe4, 0x42,
0xaf, 0x3d, 0xa2, 0x7a, 0x00, 0x07, 0xc0, 0xf0, 0xf3, 0x56, 0x51, 0x5c, 0x7d, 0x39, 0x1e, 0x8f,
0x87, 0xb2, 0xb2, 0xb2, 0xac, 0x9a, 0xfc, 0xe6, 0xc0, 0x07, 0xec, 0xb8, 0xeb, 0xe2, 0x94, 0xf6,
0x59, 0x1b, 0xf6, 0xe0, 0xa9, 0xa9, 0xcb, 0xdb, 0x22, 0x81, 0x40, 0x80, 0x60, 0x30, 0x88, 0xe8,
0x08, 0x5f, 0xed, 0x5b, 0x4c, 0xa8, 0x75, 0x9b, 0xb9, 0x7b, 0x4b, 0xa8, 0x83, 0x9b, 0xaf, 0x79,
0x40, 0x7a, 0x33, 0x06, 0xb2, 0xc4, 0x33, 0x50, 0xb8, 0xef, 0xd7, 0x5e, 0x31, 0x8f, 0xcb, 0x36,
0xef, 0xa7, 0x66, 0xc6, 0x35, 0x79, 0x1d, 0xe6, 0x64, 0x2a, 0x29, 0x29, 0xa1, 0xbc, 0xbc, 0x1c,
0x65, 0xd8, 0xf0, 0x9d, 0xfb, 0x10, 0x65, 0x67, 0xdc, 0x6a, 0xe6, 0xe9, 0x7a, 0xb7, 0x87, 0x3f,
0x37, 0xae, 0x52, 0x15, 0x99, 0x23, 0x71, 0x02, 0x0a, 0x49, 0x41, 0x48, 0x04, 0x60, 0x73, 0x7b,
0x70, 0xf9, 0x6a, 0xb0, 0xba, 0x8a, 0x4f, 0x4a, 0x00, 0x11, 0xc1, 0xed, 0x76, 0x33, 0x6c, 0xd8,
0x30, 0x94, 0x52, 0x94, 0xd7, 0xdd, 0x81, 0x6f, 0xc2, 0xaf, 0x01, 0x6b, 0x1f, 0x5f, 0x9a, 0x0b,
0x23, 0x31, 0x9a, 0xfe, 0xb4, 0x4a, 0x9d, 0x31, 0x24, 0x16, 0x18, 0x40, 0xae, 0x7e, 0x2c, 0x3a,
0x29, 0x21, 0xec, 0x76, 0x3b, 0x3e, 0x9f, 0x0f, 0xc3, 0x30, 0x28, 0xaa, 0xbe, 0x8a, 0xaa, 0x0b,
0xd6, 0x83, 0xd5, 0x13, 0xe7, 0xed, 0x4c, 0xa2, 0x34, 0xbd, 0xf2, 0x90, 0x3a, 0x2f, 0xab, 0x05,
0x86, 0x2a, 0x90, 0x15, 0x82, 0x50, 0xc3, 0x87, 0x0f, 0xc7, 0x6e, 0xb7, 0xe3, 0xac, 0xb8, 0x80,
0x91, 0xf5, 0x5b, 0xb0, 0x3a, 0x47, 0xc6, 0x79, 0xab, 0x8c, 0x69, 0x1e, 0x4c, 0xb5, 0x40, 0x42,
0xa8, 0x2e, 0xc0, 0x7d, 0x4c, 0x32, 0x26, 0x08, 0x7c, 0x92, 0xb1, 0x24, 0x4e, 0x86, 0x61, 0xe0,
0xf3, 0xf9, 0x70, 0xb9, 0x5c, 0xd8, 0x8a, 0x6a, 0x19, 0x31, 0xe5, 0xa9, 0x01, 0xfe, 0x84, 0x99,
0x2f, 0xad, 0x50, 0x63, 0x13, 0xd2, 0xe9, 0x84, 0xbd, 0x25, 0xff, 0x58, 0x10, 0x8f, 0xc1, 0x47,
0xde, 0x7c, 0x96, 0xd6, 0x77, 0xb6, 0x12, 0xed, 0x0e, 0x25, 0x9c, 0x81, 0xc1, 0x48, 0x3f, 0x42,
0xa1, 0x10, 0xca, 0xea, 0x49, 0xe0, 0x51, 0x19, 0x8c, 0x02, 0xf6, 0x9b, 0xeb, 0x01, 0x06, 0xde,
0xa5, 0x80, 0x60, 0xa6, 0x30, 0x6c, 0x0e, 0x22, 0x21, 0x3f, 0xbd, 0x81, 0x76, 0x0c, 0xab, 0x0d,
0xc3, 0xe6, 0x00, 0xd4, 0xa0, 0x08, 0x60, 0xe6, 0xc3, 0xcc, 0xa3, 0xa8, 0xa4, 0xa2, 0x5e, 0x92,
0x5c, 0xc1, 0xec, 0x46, 0xd9, 0x9e, 0xd2, 0x33, 0x27, 0x72, 0xf9, 0x0b, 0xad, 0x7c, 0xfa, 0xe2,
0xa3, 0x1c, 0x78, 0x7a, 0x29, 0xf5, 0x2b, 0xb6, 0x51, 0x7e, 0xd6, 0xe4, 0x54, 0x97, 0x32, 0x17,
0xc7, 0x4f, 0xdc, 0xcd, 0x37, 0x9f, 0xec, 0x3a, 0xd1, 0x7f, 0x22, 0x2f, 0xe8, 0x7f, 0xef, 0x63,
0xa6, 0xaa, 0xfe, 0x4a, 0xce, 0xb9, 0x69, 0x49, 0x92, 0x6b, 0x99, 0x6f, 0x0a, 0x92, 0x04, 0x38,
0x79, 0x0b, 0x24, 0x69, 0x20, 0x8f, 0x39, 0xdd, 0xed, 0x2d, 0x84, 0x5a, 0x3f, 0x3d, 0x61, 0x40,
0x85, 0x52, 0x06, 0x28, 0x05, 0x28, 0x94, 0x52, 0x88, 0x8e, 0xf1, 0xef, 0x97, 0xd7, 0x12, 0xf6,
0x7f, 0xc5, 0x59, 0xf3, 0x1f, 0xea, 0x57, 0x66, 0x02, 0x8f, 0xe4, 0xb0, 0x40, 0xa1, 0x02, 0xc4,
0x47, 0xfd, 0xfd, 0xe1, 0x5b, 0x30, 0xec, 0xce, 0xac, 0x63, 0x2d, 0x76, 0x17, 0x00, 0x33, 0x7e,
0xbb, 0x07, 0x97, 0xaf, 0x26, 0xa5, 0xbf, 0xeb, 0xe8, 0x67, 0x34, 0xdd, 0x77, 0x15, 0xad, 0x7f,
0x79, 0x81, 0x9e, 0xc0, 0x37, 0x78, 0xaf, 0x5f, 0x9a, 0x6a, 0x81, 0x6c, 0x2e, 0x64, 0xce, 0x85,
0xb4, 0xb9, 0x7a, 0x48, 0xd2, 0xb8, 0x8e, 0xf6, 0xa2, 0x0c, 0x03, 0x65, 0xb1, 0xf5, 0x0b, 0x1a,
0xed, 0x0e, 0x61, 0x44, 0xc2, 0xd9, 0xeb, 0x58, 0x9b, 0x03, 0x80, 0xb6, 0x5d, 0xdb, 0x70, 0x94,
0x7a, 0x51, 0x86, 0x05, 0x0c, 0xa3, 0x6f, 0x2d, 0x65, 0xd0, 0x75, 0xf4, 0x08, 0x61, 0xff, 0x57,
0xa0, 0x14, 0xe5, 0x63, 0xa6, 0x81, 0x61, 0x41, 0xa2, 0x92, 0x50, 0xc8, 0xa8, 0x64, 0x0b, 0xc4,
0x04, 0x94, 0xe4, 0x6f, 0x81, 0xce, 0xd6, 0x4f, 0x79, 0xef, 0xce, 0x0b, 0xa9, 0x6a, 0xf8, 0x1e,
0x13, 0xee, 0xfe, 0x0d, 0xdd, 0x47, 0x8f, 0x00, 0x30, 0xf6, 0xf6, 0xc7, 0xf0, 0x4d, 0xbe, 0x24,
0xab, 0x00, 0x7b, 0x96, 0x5d, 0x47, 0x07, 0x70, 0x60, 0xf3, 0xaf, 0xb2, 0x0a, 0x39, 0xfe, 0xae,
0xb5, 0x94, 0x4d, 0xbc, 0x84, 0xb6, 0xb6, 0xb6, 0x13, 0x0a, 0x35, 0x29, 0x39, 0xc5, 0x02, 0x1a,
0x53, 0x51, 0x92, 0x1b, 0x46, 0xc5, 0xe4, 0xf3, 0x6d, 0x3b, 0x5f, 0xa6, 0x75, 0xc7, 0x1f, 0x50,
0x16, 0x1b, 0x45, 0xd5, 0xa7, 0xe5, 0x74, 0xbb, 0xea, 0x19, 0xd7, 0xf6, 0x69, 0x56, 0x6b, 0x44,
0xfa, 0x88, 0x98, 0xe9, 0x5d, 0x6b, 0xbc, 0xe7, 0x5f, 0x4a, 0x59, 0xdd, 0x24, 0x7a, 0x7a, 0x7a,
0xd2, 0xa2, 0x90, 0xca, 0xee, 0x42, 0x3a, 0x27, 0x0a, 0xc5, 0xdb, 0xbb, 0x8e, 0x1e, 0xe6, 0xa3,
0xd5, 0xb7, 0x62, 0x71, 0x15, 0x71, 0xee, 0xcf, 0x7f, 0x87, 0xab, 0xaa, 0x36, 0xa7, 0x00, 0xc3,
0xeb, 0xe7, 0x14, 0x0c, 0xa1, 0xc9, 0x67, 0x20, 0x16, 0xcd, 0x7a, 0x88, 0x07, 0x26, 0x7f, 0xfe,
0xc6, 0xd3, 0x69, 0x17, 0xef, 0xf5, 0x1f, 0x03, 0x20, 0x78, 0xf0, 0x43, 0xec, 0xa5, 0x5e, 0x26,
0xfe, 0xe2, 0x59, 0x3c, 0xa7, 0x8e, 0x19, 0xf4, 0xf4, 0xc3, 0x0c, 0xe9, 0x5a, 0xb2, 0x5c, 0xee,
0xea, 0x0c, 0x28, 0x74, 0xe0, 0xc9, 0xc5, 0x39, 0xe2, 0x98, 0x62, 0xf2, 0x92, 0xad, 0xb8, 0x47,
0xd4, 0x0e, 0x49, 0x5e, 0x94, 0xc9, 0x02, 0x2a, 0x5f, 0x14, 0x1a, 0xbb, 0x68, 0x4d, 0xfa, 0x9b,
0xb6, 0xe3, 0x5f, 0xd2, 0xfc, 0xcc, 0x52, 0x10, 0xe1, 0xd0, 0xd6, 0x47, 0x19, 0xbd, 0xf0, 0xe1,
0x3e, 0x34, 0x19, 0x32, 0x21, 0x12, 0x95, 0x4c, 0x2c, 0x4f, 0x0b, 0xf8, 0x32, 0xf8, 0x6b, 0xd7,
0x17, 0x07, 0x69, 0x7e, 0x66, 0x29, 0xb6, 0xe2, 0x32, 0xda, 0xde, 0x79, 0x81, 0x48, 0x57, 0x90,
0xb1, 0x8b, 0xd6, 0x62, 0xd8, 0xec, 0x83, 0xca, 0x7c, 0xc2, 0x79, 0xcc, 0x06, 0xa3, 0xe6, 0xce,
0x42, 0x82, 0x58, 0xf9, 0x98, 0x69, 0x44, 0xbb, 0x43, 0xb4, 0xef, 0x7e, 0x83, 0x7d, 0x0f, 0xce,
0x65, 0xfc, 0xcf, 0x36, 0x62, 0x71, 0xa4, 0xbf, 0xa3, 0xed, 0x6c, 0x69, 0xa6, 0xe5, 0xf5, 0x8d,
0x85, 0xa5, 0xd6, 0x15, 0xd5, 0xc8, 0xb8, 0xcb, 0xfa, 0xad, 0x20, 0x99, 0x72, 0x21, 0x9d, 0xc1,
0x85, 0xcc, 0x42, 0xa8, 0xb8, 0xe3, 0x99, 0x8f, 0x80, 0x61, 0x61, 0xc2, 0x3d, 0x9b, 0xd9, 0xbf,
0xfa, 0xc7, 0x1c, 0xdb, 0xdd, 0x88, 0xff, 0x93, 0x26, 0x2a, 0x27, 0x5e, 0x9c, 0xfe, 0x86, 0xfa,
0xeb, 0x56, 0xda, 0xf7, 0x6e, 0xa7, 0x7a, 0xc6, 0x75, 0x79, 0x0b, 0xa0, 0xdc, 0x25, 0xc4, 0xd2,
0xc0, 0x68, 0x3c, 0x97, 0xc8, 0x89, 0x42, 0x69, 0xb1, 0x1f, 0x70, 0x56, 0x9d, 0xca, 0x85, 0x4f,
0x7e, 0x84, 0xb2, 0xd8, 0xc0, 0xb0, 0xe0, 0xab, 0x9f, 0xc3, 0xb1, 0xdd, 0x8d, 0xe8, 0x58, 0x24,
0xb3, 0xe5, 0x44, 0x70, 0x54, 0x8c, 0x60, 0xd4, 0xec, 0x9b, 0xf9, 0xc7, 0xba, 0x9f, 0xf6, 0x37,
0x9f, 0x39, 0xf7, 0x7e, 0x9c, 0xde, 0x1a, 0x3e, 0x7f, 0x75, 0x03, 0x5d, 0x6d, 0x87, 0x12, 0x93,
0xc5, 0xda, 0xf1, 0xf4, 0xa4, 0x41, 0x21, 0xc9, 0x17, 0x85, 0x32, 0xbb, 0x91, 0xc2, 0xe2, 0xf2,
0xa4, 0xe4, 0xfe, 0xf1, 0x9b, 0xed, 0xcc, 0xf9, 0x9e, 0x29, 0xf3, 0x4c, 0xda, 0xaf, 0xeb, 0xcb,
0xc3, 0x84, 0x8e, 0x7c, 0x9c, 0x30, 0xc7, 0x7d, 0xc6, 0x24, 0xc4, 0x5d, 0x5d, 0x60, 0x2e, 0x24,
0x92, 0x57, 0x2a, 0x7d, 0xd2, 0x25, 0xa3, 0xbb, 0x84, 0xb1, 0x3f, 0xd9, 0x90, 0xd2, 0x5e, 0x77,
0xd3, 0xb2, 0x54, 0xb0, 0xe8, 0xea, 0x22, 0xf4, 0xd9, 0x67, 0xa9, 0x30, 0x1a, 0xfb, 0xaf, 0x2d,
0x70, 0x62, 0x6c, 0x34, 0x42, 0xa0, 0x79, 0x0f, 0x9d, 0x2d, 0xff, 0x02, 0x20, 0xd4, 0xf2, 0x4f,
0x2c, 0x6e, 0x0f, 0xc5, 0xa7, 0x9c, 0x83, 0xd5, 0x5d, 0x92, 0x5a, 0xbd, 0x09, 0xf4, 0x06, 0xda,
0x89, 0x84, 0xfc, 0xfd, 0xed, 0x8e, 0x8a, 0x2a, 0x2c, 0xce, 0x81, 0xcf, 0x72, 0xc1, 0xe6, 0x3d,
0xe8, 0x68, 0xa4, 0x6f, 0x8e, 0xbb, 0x22, 0x6d, 0x20, 0x93, 0xac, 0x28, 0xa4, 0xf3, 0x47, 0xa1,
0x48, 0xa7, 0x9f, 0x7d, 0xcb, 0x07, 0x0e, 0xe5, 0xe1, 0x3f, 0xae, 0x04, 0x60, 0xc2, 0x7d, 0xcf,
0x51, 0x36, 0x7a, 0x6a, 0xda, 0x39, 0x47, 0x5e, 0x5e, 0x43, 0x6b, 0xe3, 0xa6, 0xfe, 0xdf, 0xa3,
0x6f, 0x7b, 0x2c, 0x01, 0xae, 0x3f, 0x5e, 0xbd, 0x90, 0xde, 0x40, 0x3b, 0x00, 0x55, 0x97, 0xce,
0x43, 0x26, 0x5d, 0xdd, 0xc7, 0x8f, 0xce, 0xe2, 0x42, 0x3a, 0x83, 0x0b, 0xe5, 0x12, 0xc2, 0x70,
0xb8, 0xa9, 0xfd, 0xc1, 0x3d, 0x29, 0xed, 0x4e, 0x6f, 0x4d, 0xca, 0x5c, 0xc3, 0xe1, 0xc6, 0xe1,
0x1d, 0xc5, 0xb0, 0xc9, 0xb3, 0x70, 0x0e, 0x1b, 0x39, 0x50, 0xf7, 0x26, 0xa5, 0x20, 0xde, 0x29,
0x57, 0x12, 0xed, 0xee, 0x00, 0xa0, 0xe8, 0x94, 0x73, 0x08, 0xa4, 0x2b, 0x29, 0x75, 0x9e, 0x05,
0x4d, 0xae, 0xc7, 0xe2, 0x70, 0x53, 0x33, 0x67, 0x61, 0x5e, 0xbe, 0x5f, 0x5a, 0x37, 0x99, 0xd2,
0xba, 0xbe, 0x72, 0xb3, 0xf4, 0xec, 0x29, 0x19, 0xc7, 0x9d, 0x7e, 0xc3, 0xfd, 0x03, 0xb1, 0xa3,
0xb3, 0x93, 0xe3, 0x87, 0x0e, 0xa5, 0xa4, 0xd3, 0x59, 0x73, 0xa1, 0xf8, 0xe5, 0x56, 0x38, 0x1c,
0xc6, 0xef, 0xf7, 0xff, 0x4f, 0xbf, 0xc4, 0x87, 0xc3, 0xe1, 0xb4, 0xe9, 0xb4, 0xa1, 0xf2, 0xb0,
0x40, 0x30, 0x18, 0x24, 0x18, 0x0c, 0x7e, 0x2b, 0xfe, 0x52, 0x90, 0x8c, 0x42, 0xd1, 0x34, 0x28,
0xd4, 0x1b, 0xbf, 0x9d, 0xee, 0x38, 0xb6, 0x9b, 0x68, 0xf8, 0xf8, 0xb7, 0xea, 0x3f, 0x11, 0x3a,
0xd6, 0x9b, 0x9c, 0x4e, 0x87, 0x93, 0x2d, 0xf0, 0x0e, 0x70, 0x05, 0x80, 0xbf, 0xe5, 0x2d, 0xfc,
0xbc, 0x35, 0xc8, 0x2a, 0x1c, 0xd4, 0xd5, 0x82, 0x2a, 0xcc, 0xee, 0x84, 0xab, 0xc5, 0x58, 0x94,
0x5b, 0x04, 0x5e, 0x15, 0x21, 0x96, 0xcf, 0x77, 0xda, 0x82, 0x89, 0x41, 0xa3, 0x7d, 0x22, 0x7c,
0xff, 0x9e, 0xa7, 0xa4, 0x23, 0xe1, 0x03, 0x47, 0xfc, 0x59, 0xb1, 0x40, 0x8d, 0x30, 0x0c, 0x66,
0xa3, 0xb0, 0x7f, 0x9b, 0x5c, 0x48, 0xf5, 0x1d, 0x81, 0xf7, 0xef, 0x5d, 0x27, 0x7b, 0xcd, 0xed,
0xff, 0x01, 0xf0, 0x3e, 0x79, 0xb4, 0x19, 0x63, 0x64, 0xed, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
0x87, 0x00, 0x00, 0x08, 0xbc, 0x49, 0x44, 0x41, 0x54, 0x68, 0xde, 0xd5, 0x99, 0x7b, 0x70, 0xd4,
0xd5, 0x15, 0xc7, 0x3f, 0xf7, 0xb7, 0xbf, 0xdd, 0x6c, 0x36, 0x64, 0xf3, 0xd8, 0x6c, 0xb2, 0x1b,
0x90, 0xa7, 0xad, 0x0f, 0x94, 0x42, 0x29, 0xcf, 0x58, 0x8c, 0xc5, 0x16, 0x33, 0x36, 0x8e, 0x7d,
0x30, 0x2a, 0xf8, 0xb6, 0x2d, 0x6a, 0xc5, 0x3a, 0x5a, 0x9d, 0x0a, 0xad, 0x1d, 0x75, 0x98, 0xc1,
0x57, 0x1d, 0xa5, 0xc2, 0x48, 0xc8, 0xd0, 0x51, 0x74, 0xb4, 0xa0, 0xd5, 0x82, 0x40, 0x3b, 0xd2,
0x32, 0x45, 0x41, 0xa8, 0x5a, 0xed, 0xd4, 0xf0, 0xe8, 0x50, 0x12, 0xa1, 0x96, 0x24, 0xc0, 0xc2,
0x86, 0x25, 0xcb, 0x3e, 0xee, 0xe9, 0x1f, 0x9b, 0x7d, 0xb1, 0xbb, 0xd9, 0x07, 0x30, 0x83, 0x67,
0xe6, 0x37, 0x49, 0xee, 0xef, 0xfe, 0xee, 0x39, 0xe7, 0x9e, 0xf3, 0x3d, 0xe7, 0x7b, 0x6f, 0x94,
0x88, 0xf0, 0xf7, 0x36, 0x35, 0x49, 0x1b, 0x3c, 0x8a, 0xd0, 0xc2, 0xd9, 0x91, 0x00, 0x8a, 0x8d,
0xa2, 0xf9, 0x83, 0xb3, 0x9a, 0xd5, 0x17, 0xcf, 0x96, 0x50, 0xea, 0xcb, 0x8e, 0xd5, 0xca, 0xd6,
0xe7, 0x67, 0x35, 0xc2, 0x35, 0x45, 0xac, 0xf9, 0x1f, 0x25, 0xfc, 0x5c, 0x6d, 0x7b, 0x91, 0x29,
0x28, 0x3e, 0x28, 0xd5, 0x32, 0x29, 0xfe, 0x93, 0xf7, 0x25, 0xca, 0xf7, 0xa7, 0xdf, 0x29, 0x3d,
0xf1, 0x81, 0xad, 0x6d, 0x6a, 0x92, 0x01, 0x3b, 0x4a, 0x50, 0xdf, 0x69, 0x68, 0x61, 0xbe, 0x16,
0x28, 0xf5, 0x91, 0xe2, 0x9f, 0x26, 0x0c, 0x76, 0x6c, 0x5b, 0xae, 0x2e, 0x8d, 0x5b, 0x31, 0xfd,
0xc7, 0x7c, 0xa8, 0x61, 0x47, 0x09, 0xfa, 0x6b, 0x4c, 0x81, 0x6f, 0xc4, 0xb7, 0xb1, 0xbc, 0xfe,
0x0a, 0x3c, 0x53, 0x56, 0xe5, 0x74, 0x57, 0x29, 0x55, 0x72, 0x0e, 0xf5, 0xed, 0x7f, 0x9d, 0x43,
0x9f, 0x3e, 0x84, 0xe8, 0x30, 0xc0, 0x08, 0x81, 0xad, 0xef, 0xbd, 0xa8, 0xe6, 0x5c, 0x36, 0x4f,
0xd6, 0x82, 0x48, 0x99, 0xa8, 0x2b, 0x82, 0xc2, 0x2a, 0xe0, 0x7b, 0xc5, 0xac, 0x6b, 0xa4, 0xef,
0xa6, 0x24, 0x9e, 0xac, 0xe9, 0x92, 0xf2, 0xbe, 0x98, 0x47, 0x6b, 0x4d, 0xc5, 0xd0, 0xd9, 0x34,
0x4c, 0x7d, 0x1d, 0x65, 0xad, 0x8d, 0xeb, 0x1b, 0x22, 0xc2, 0x5b, 0x5b, 0x96, 0xa9, 0x07, 0x01,
0x26, 0xfe, 0x44, 0x4e, 0x34, 0xcd, 0xe3, 0x07, 0x22, 0x2c, 0x2e, 0x34, 0x9a, 0x08, 0xa8, 0xcd,
0x4b, 0xd9, 0xa5, 0xe0, 0x02, 0x00, 0x47, 0x7d, 0x33, 0x9e, 0x29, 0x2f, 0x03, 0xe0, 0x76, 0xbb,
0xb1, 0x58, 0x2c, 0x05, 0xef, 0xc4, 0x5b, 0x3f, 0x1c, 0x8e, 0xc5, 0x66, 0xa7, 0xf5, 0xd5, 0x3d,
0x19, 0xef, 0xc2, 0xe1, 0x30, 0x3e, 0x9f, 0x0f, 0xad, 0x35, 0x91, 0x13, 0xfb, 0x39, 0xb8, 0xe3,
0x16, 0x42, 0x7d, 0xff, 0x4e, 0x6e, 0x8c, 0xe2, 0x77, 0x6e, 0x17, 0xf3, 0xe2, 0xe0, 0xfe, 0xdb,
0x52, 0x75, 0x33, 0x8a, 0x36, 0xc0, 0x96, 0x47, 0xed, 0x31, 0x43, 0x32, 0x72, 0xba, 0xb4, 0x5d,
0x8e, 0x86, 0x4e, 0x12, 0x0d, 0x05, 0xb3, 0xbe, 0x33, 0x4d, 0x13, 0x97, 0xcb, 0x85, 0x69, 0x9a,
0x58, 0xca, 0x87, 0xe1, 0x6d, 0x7a, 0x1b, 0x7b, 0xdd, 0xe5, 0x49, 0x9d, 0x9a, 0x5b, 0x7b, 0x7a,
0xd9, 0xb4, 0x65, 0x89, 0x72, 0x03, 0xcc, 0xb8, 0x5b, 0x5e, 0xd2, 0xc2, 0x4c, 0x11, 0x0e, 0xe5,
0x8b, 0x82, 0x91, 0x36, 0xa0, 0x63, 0xe1, 0xd6, 0x5a, 0x9f, 0xf1, 0x3a, 0x6a, 0x18, 0x06, 0xb5,
0xb5, 0xb5, 0x94, 0x95, 0x95, 0xa1, 0x2c, 0x15, 0x78, 0x26, 0xaf, 0xc4, 0x39, 0xe2, 0x56, 0x44,
0x13, 0x7f, 0x2e, 0x8b, 0x28, 0xb6, 0x6f, 0x7e, 0x5e, 0x5d, 0x02, 0xd0, 0x7c, 0xb7, 0xbc, 0xa7,
0x34, 0x93, 0xb5, 0xd0, 0x31, 0x18, 0x90, 0x8d, 0x94, 0x05, 0x06, 0x1c, 0x29, 0x2d, 0x02, 0xf1,
0x82, 0x3a, 0xf8, 0x1c, 0xa8, 0xae, 0xae, 0xc6, 0xe1, 0x70, 0xa0, 0x45, 0x51, 0x3b, 0xf6, 0xd7,
0xb8, 0x2e, 0x79, 0x1c, 0xb0, 0xc4, 0x37, 0x71, 0x94, 0x56, 0x6c, 0xfd, 0xeb, 0x12, 0x75, 0x35,
0xc0, 0x8c, 0x7b, 0x64, 0x5f, 0x50, 0x33, 0x0d, 0xcd, 0xc6, 0x9c, 0x11, 0xd0, 0x83, 0xa4, 0xd0,
0xd9, 0x12, 0xa7, 0xd3, 0x49, 0x75, 0x75, 0x35, 0x00, 0x95, 0x23, 0xe6, 0xd2, 0x30, 0x79, 0x25,
0x98, 0xce, 0xb8, 0x0d, 0x95, 0x51, 0xe1, 0x8f, 0x9b, 0x9e, 0x57, 0xf7, 0x03, 0xb4, 0xcc, 0x17,
0xff, 0x21, 0x0f, 0xdf, 0x05, 0x96, 0x64, 0x75, 0x80, 0xb4, 0x81, 0x74, 0xe3, 0x8b, 0x8b, 0x40,
0x71, 0x95, 0xaa, 0xbc, 0xbc, 0x1c, 0x97, 0xcb, 0x85, 0x52, 0x0a, 0x7b, 0x5d, 0x13, 0x43, 0x9b,
0xd6, 0x60, 0x3a, 0x86, 0xc7, 0x6d, 0x31, 0xb4, 0xf0, 0xcc, 0xbb, 0xcf, 0xab, 0xf6, 0x8f, 0x96,
0x2b, 0xeb, 0xec, 0xd9, 0x12, 0xfd, 0xd6, 0x3d, 0x72, 0xaf, 0xc0, 0xdd, 0x5a, 0x88, 0xa4, 0x6c,
0x78, 0xc0, 0x88, 0xa6, 0x46, 0x40, 0x93, 0xc0, 0x40, 0xf1, 0x29, 0x54, 0x7c, 0xa9, 0xb5, 0x5a,
0xad, 0x89, 0x6a, 0x67, 0x71, 0x8c, 0xc2, 0x3b, 0xfd, 0x0d, 0xca, 0x6a, 0x27, 0x27, 0xec, 0x89,
0x6a, 0x6e, 0x3f, 0x74, 0x82, 0x77, 0xd7, 0x3d, 0xa3, 0xea, 0x00, 0xae, 0x9c, 0x2f, 0xcb, 0xb4,
0xa6, 0x45, 0x84, 0x4f, 0x44, 0xd8, 0x29, 0x9a, 0x9f, 0xa9, 0x0d, 0xbf, 0x61, 0x17, 0xf1, 0x32,
0xea, 0x9e, 0x81, 0x77, 0xca, 0x0a, 0x00, 0xbc, 0x5e, 0x2f, 0xa6, 0x69, 0xe6, 0x4d, 0x87, 0x3f,
0xdd, 0x31, 0x9e, 0xa0, 0xaf, 0x87, 0xf0, 0x89, 0x3e, 0x00, 0xac, 0x8e, 0x4a, 0xec, 0x35, 0xf5,
0xcc, 0x6a, 0xff, 0xa4, 0xe0, 0x94, 0xd2, 0x5a, 0x73, 0xe4, 0xc8, 0x11, 0xfa, 0xfb, 0xfb, 0x11,
0x89, 0xd0, 0xfb, 0xcf, 0x47, 0xe8, 0xdb, 0xbf, 0x26, 0x8d, 0xf7, 0x88, 0xa6, 0xb5, 0xe5, 0x01,
0xe9, 0xc8, 0x28, 0x0e, 0x49, 0xf0, 0x96, 0x06, 0xe0, 0x50, 0xc0, 0x4f, 0x38, 0xe0, 0xc7, 0xb0,
0x98, 0x18, 0x16, 0x93, 0x70, 0xc0, 0x4f, 0x28, 0xe0, 0x2f, 0x6a, 0x0d, 0xa5, 0x14, 0x2e, 0x97,
0x8b, 0x21, 0x43, 0x86, 0x00, 0x16, 0xdc, 0xe3, 0x16, 0x51, 0x7b, 0xe1, 0x43, 0x68, 0x8c, 0x78,
0x34, 0x46, 0x8b, 0x62, 0xdb, 0x86, 0x67, 0x54, 0x06, 0xd9, 0x34, 0xa2, 0x64, 0x07, 0x71, 0xa1,
0xe9, 0x00, 0x60, 0x58, 0xcb, 0xb8, 0x76, 0xed, 0x61, 0xae, 0x5d, 0x7b, 0x18, 0xc3, 0x5a, 0x56,
0x72, 0xd7, 0xae, 0xaa, 0xaa, 0xa2, 0xa6, 0xa6, 0x06, 0x80, 0xaa, 0xd1, 0xb7, 0xe3, 0x99, 0xf8,
0x5b, 0x94, 0xc5, 0x11, 0xdf, 0x60, 0xa7, 0x86, 0xb5, 0xef, 0x3c, 0xad, 0xee, 0x4b, 0x73, 0xe0,
0x54, 0x10, 0x17, 0x8b, 0x81, 0x38, 0x8f, 0x4a, 0xc3, 0xc2, 0x69, 0x94, 0x63, 0x87, 0xc3, 0x41,
0x5d, 0x5d, 0x5d, 0x8c, 0x9b, 0xb9, 0x9b, 0x69, 0x9c, 0xfa, 0x0a, 0x16, 0xbb, 0x27, 0x6e, 0xa3,
0x45, 0xe0, 0xd9, 0x75, 0x4f, 0xa9, 0xb6, 0x8f, 0x96, 0x2b, 0x6b, 0x06, 0x17, 0x2a, 0xa5, 0x13,
0x9f, 0x0a, 0xde, 0xd3, 0xe5, 0x4d, 0x22, 0x82, 0xcd, 0x66, 0xc3, 0xe3, 0xf1, 0x60, 0x9a, 0x26,
0xd6, 0xca, 0xaf, 0x32, 0x74, 0xfa, 0xef, 0xb1, 0x55, 0x8d, 0x4b, 0xda, 0x09, 0x3f, 0xfa, 0xe2,
0x18, 0x7f, 0x5e, 0xf7, 0xa8, 0x72, 0x18, 0x99, 0xb5, 0xf5, 0xec, 0xf7, 0x81, 0x42, 0xc4, 0x62,
0xb1, 0xd0, 0xd0, 0xd0, 0x80, 0xdd, 0x6e, 0xc7, 0xb0, 0xd5, 0xd2, 0x38, 0x75, 0x25, 0x15, 0xde,
0x96, 0x84, 0x9d, 0x5a, 0x68, 0x8e, 0xda, 0x59, 0x6c, 0xea, 0x14, 0x3b, 0xf5, 0x40, 0x0a, 0x65,
0xdb, 0xd1, 0xbc, 0x07, 0x9b, 0x53, 0xe6, 0x9e, 0x89, 0x0d, 0x50, 0x4a, 0xe1, 0x76, 0xbb, 0xf1,
0xf9, 0x7c, 0xf8, 0xfd, 0x42, 0xc3, 0xf8, 0x27, 0x89, 0x86, 0x8e, 0x13, 0xe8, 0xd9, 0x12, 0x9f,
0x72, 0x8d, 0x19, 0xc7, 0x00, 0xc4, 0xe9, 0x84, 0x14, 0xe9, 0x80, 0x20, 0x91, 0x30, 0x5b, 0x1e,
0x6a, 0x41, 0x59, 0x4c, 0x24, 0x12, 0x8e, 0x8d, 0x9d, 0xc1, 0x08, 0x56, 0x55, 0x55, 0x71, 0xf4,
0xe8, 0xd1, 0x81, 0x82, 0x51, 0x4b, 0xca, 0xd2, 0xd5, 0x66, 0x2a, 0x6f, 0x8b, 0xa7, 0x50, 0xb1,
0x11, 0x10, 0xd1, 0x1c, 0xe9, 0xf8, 0xe0, 0x8c, 0x47, 0x20, 0x1b, 0xbe, 0x62, 0xbf, 0x27, 0xdf,
0x65, 0xa4, 0x50, 0xb1, 0x0e, 0x4c, 0x5f, 0xbc, 0x1e, 0x89, 0x46, 0xd8, 0xfc, 0xd3, 0x69, 0x54,
0x8e, 0x1c, 0xcb, 0xc4, 0x07, 0x57, 0xc4, 0x22, 0x31, 0xc8, 0xb7, 0xbd, 0xff, 0xf8, 0x0b, 0x5d,
0x1b, 0x56, 0x26, 0x1d, 0x1d, 0x20, 0x83, 0xc9, 0xdf, 0x63, 0xe3, 0xde, 0xa9, 0x57, 0x33, 0x7c,
0xd6, 0xcd, 0x69, 0xb6, 0xc4, 0x81, 0x9c, 0x70, 0x20, 0x55, 0x8f, 0x08, 0x45, 0x63, 0xc0, 0xe1,
0x19, 0x99, 0x04, 0x9e, 0xcd, 0x4e, 0xc5, 0xd0, 0xf3, 0xf3, 0x46, 0x20, 0x70, 0xb0, 0x8b, 0x83,
0xdb, 0x37, 0xe4, 0x5d, 0xbb, 0xf7, 0xe3, 0x4d, 0x04, 0xba, 0xbb, 0xb8, 0x60, 0xee, 0x82, 0x94,
0x8d, 0x25, 0x3d, 0x02, 0x51, 0x01, 0x95, 0x88, 0x40, 0x69, 0x29, 0x14, 0x97, 0xfe, 0xde, 0xfd,
0x7c, 0xb6, 0x62, 0x61, 0xde, 0x79, 0xe1, 0x3e, 0x1f, 0x00, 0x0d, 0x53, 0x5a, 0x18, 0x71, 0xd5,
0x6d, 0xa0, 0x14, 0xa0, 0x62, 0x67, 0x6e, 0x05, 0xa0, 0x08, 0x7c, 0xb1, 0x97, 0x8e, 0xf6, 0x85,
0xec, 0x7d, 0xe3, 0x39, 0xfa, 0x7b, 0x0f, 0xe0, 0x6c, 0xbd, 0x1f, 0x65, 0x31, 0x63, 0x85, 0x26,
0xd5, 0x01, 0x92, 0xbd, 0x28, 0x6b, 0x17, 0x2e, 0x46, 0x4e, 0xfa, 0x7a, 0xe8, 0x5c, 0xb7, 0x3c,
0x3f, 0x9d, 0x1e, 0x39, 0x16, 0x00, 0xbb, 0xab, 0x91, 0xda, 0x4b, 0xa6, 0x83, 0x32, 0x50, 0xca,
0x18, 0x70, 0x64, 0xe0, 0x82, 0xc1, 0x7d, 0x1e, 0xf6, 0x5a, 0x2f, 0x27, 0xba, 0xbb, 0x38, 0xf2,
0xd9, 0x56, 0xec, 0x4d, 0x37, 0x60, 0xab, 0x1b, 0x96, 0x89, 0x81, 0x53, 0x53, 0xa8, 0x50, 0x07,
0x3e, 0x7e, 0xe2, 0x56, 0x0c, 0xd3, 0xca, 0xf8, 0x07, 0xda, 0x52, 0x94, 0x0e, 0x63, 0xec, 0xbc,
0x27, 0xf3, 0x3a, 0x70, 0x64, 0xe7, 0x76, 0xfc, 0x9d, 0x9f, 0xd1, 0xb5, 0xbe, 0x9d, 0xae, 0xf5,
0xed, 0xa9, 0x75, 0x73, 0xc0, 0x11, 0x03, 0x44, 0x23, 0x3a, 0x8a, 0x73, 0xf4, 0xa5, 0x7c, 0xfd,
0x17, 0x2f, 0xf1, 0x3f, 0x7f, 0xec, 0xb8, 0x9a, 0x81, 0x01, 0x9d, 0x72, 0x3b, 0x55, 0x4c, 0x1f,
0xe8, 0xd9, 0xb1, 0x11, 0xc3, 0x6a, 0x43, 0x44, 0xf8, 0x7c, 0x63, 0x0c, 0x90, 0x91, 0x60, 0x00,
0xd7, 0xf8, 0x2b, 0xf2, 0x3a, 0x10, 0xf4, 0x75, 0x63, 0x3a, 0x9c, 0x20, 0x82, 0x0c, 0x1c, 0x07,
0x45, 0x0f, 0xfc, 0x14, 0x01, 0x1d, 0x45, 0x44, 0x53, 0x3f, 0xe9, 0x2a, 0xc6, 0xdd, 0xb7, 0x14,
0xc3, 0x66, 0x47, 0x8e, 0x75, 0x66, 0x62, 0x40, 0x81, 0x29, 0xa7, 0x59, 0x46, 0x77, 0xbf, 0xfc,
0x38, 0x9d, 0x6f, 0x2f, 0xc5, 0x52, 0xe6, 0x60, 0xdc, 0xbd, 0x2f, 0x14, 0xf4, 0x4d, 0x63, 0xf3,
0x75, 0x34, 0x36, 0x5f, 0x57, 0x54, 0x19, 0x4d, 0x6c, 0xac, 0x4e, 0x49, 0x21, 0x19, 0x48, 0x21,
0xc9, 0xe2, 0x40, 0x9c, 0xd0, 0x0d, 0xba, 0x70, 0x34, 0x42, 0xe7, 0xdb, 0x4b, 0xb1, 0x39, 0x5d,
0x4c, 0x78, 0xf8, 0x25, 0x9c, 0x63, 0xc6, 0x9f, 0x15, 0x0a, 0x92, 0x51, 0x46, 0x75, 0x6a, 0x0a,
0xa5, 0x46, 0x20, 0xa5, 0x13, 0x77, 0xbf, 0xff, 0x16, 0xfb, 0x56, 0x3f, 0x3d, 0xf8, 0xc2, 0x5a,
0x53, 0x5e, 0x7f, 0x1e, 0x13, 0x16, 0xbc, 0x8a, 0xc3, 0x3b, 0xea, 0xac, 0xf1, 0xa7, 0x41, 0x1b,
0x99, 0xe4, 0xe0, 0x42, 0x91, 0xfe, 0xe3, 0x04, 0x7b, 0x0f, 0xe4, 0x5d, 0x7c, 0xe4, 0xb5, 0xf3,
0x29, 0xf7, 0x8c, 0xcc, 0x69, 0xfc, 0xbe, 0x35, 0xcf, 0x12, 0x0d, 0x05, 0x4b, 0xe0, 0x41, 0xe9,
0xa9, 0x1d, 0x74, 0x36, 0xe2, 0xb8, 0xf8, 0x9b, 0x71, 0x22, 0x77, 0x4a, 0x04, 0x54, 0x66, 0x0a,
0x35, 0xce, 0x9c, 0xcb, 0xf0, 0x59, 0xb7, 0xe4, 0x54, 0xb0, 0xe9, 0xfa, 0xf3, 0x00, 0xd8, 0xb5,
0xe2, 0x61, 0x24, 0x1a, 0x61, 0xe8, 0xb7, 0x6f, 0xca, 0x3a, 0xef, 0xf3, 0xf5, 0x6d, 0x44, 0x06,
0x8e, 0x9b, 0xa7, 0x23, 0x95, 0x93, 0x5a, 0xb1, 0x5f, 0xd8, 0x84, 0xd6, 0xa7, 0x46, 0x20, 0xa5,
0x0a, 0x15, 0xdb, 0x07, 0x94, 0xc5, 0xc4, 0x30, 0xad, 0xec, 0x6a, 0x5f, 0x40, 0xd0, 0xd7, 0xcd,
0xe8, 0xd9, 0x0f, 0x64, 0x9d, 0xe7, 0x9e, 0xdc, 0xc2, 0x45, 0xf3, 0x9e, 0x3a, 0xad, 0x14, 0xea,
0xfc, 0xfc, 0x40, 0x22, 0x7d, 0x72, 0x73, 0x21, 0x4d, 0x51, 0xb7, 0x72, 0xca, 0x30, 0x98, 0xf0,
0xcb, 0xd7, 0xf8, 0xf4, 0xc9, 0xdb, 0xe8, 0x7c, 0xf3, 0x39, 0xa2, 0xc1, 0x00, 0x5f, 0xb9, 0xe9,
0x91, 0xcc, 0x5b, 0x39, 0x8b, 0x89, 0xe9, 0x70, 0x72, 0x60, 0xe3, 0x4a, 0x4e, 0xfa, 0x0e, 0x26,
0x95, 0x57, 0x54, 0x33, 0xe2, 0x9a, 0xbb, 0x00, 0x08, 0xf9, 0x0f, 0xd3, 0xbb, 0x63, 0x43, 0x6e,
0x0c, 0x78, 0xc7, 0x81, 0x69, 0x4b, 0xf4, 0x82, 0xd3, 0x6e, 0x64, 0xb6, 0xaa, 0x3a, 0x0c, 0x6b,
0x19, 0x95, 0x63, 0xc6, 0x33, 0xf1, 0xd1, 0x37, 0xf9, 0x70, 0x61, 0x2b, 0x3d, 0x1f, 0xac, 0xe3,
0xfc, 0x1b, 0x7f, 0x95, 0xf5, 0x9f, 0x20, 0x22, 0xc2, 0x17, 0x9b, 0x5f, 0xe3, 0x78, 0xd7, 0xce,
0xc4, 0xb8, 0xbd, 0x6e, 0x28, 0xc3, 0x5b, 0xef, 0x8c, 0xd1, 0x90, 0xee, 0x2e, 0x76, 0xb7, 0x2f,
0xc8, 0xa9, 0xcf, 0x73, 0xdf, 0x2a, 0x2c, 0x56, 0x7b, 0xe2, 0x7f, 0x12, 0x05, 0xb1, 0xd1, 0xc1,
0xa4, 0x69, 0xd9, 0x47, 0xc9, 0x0e, 0xec, 0x19, 0x85, 0x59, 0xe1, 0xcc, 0x5f, 0xff, 0x67, 0xde,
0x48, 0xe8, 0x58, 0x6f, 0x52, 0xb9, 0x23, 0xf9, 0x8d, 0xb5, 0xb2, 0x86, 0xfa, 0x69, 0xad, 0xb9,
0x72, 0x08, 0xac, 0x65, 0xc9, 0xeb, 0xfa, 0x42, 0x22, 0x50, 0x2a, 0xa7, 0xcf, 0xfa, 0xcd, 0x80,
0xe2, 0xc6, 0x99, 0x73, 0x73, 0xce, 0xb7, 0xd7, 0x8f, 0xe0, 0xe2, 0x7b, 0x96, 0xe4, 0x5c, 0x73,
0xcf, 0x9e, 0x3d, 0xd9, 0x31, 0x30, 0x18, 0x9d, 0x3e, 0x97, 0x24, 0xd9, 0xc8, 0x64, 0x70, 0x2e,
0x54, 0x2c, 0x95, 0x38, 0xde, 0xd5, 0x41, 0xe4, 0x84, 0x1f, 0x1d, 0x3e, 0x09, 0x80, 0xaf, 0x63,
0x5b, 0xec, 0xac, 0x77, 0xd1, 0xd4, 0x0c, 0x0c, 0x14, 0x2a, 0xe1, 0x3e, 0x1f, 0xd1, 0x60, 0x20,
0xf5, 0xd0, 0x4a, 0x34, 0x14, 0x44, 0x99, 0xb6, 0x2c, 0x11, 0xd0, 0xb9, 0x53, 0xa8, 0x10, 0xd9,
0xbb, 0xea, 0x31, 0x8e, 0xee, 0xdc, 0x9e, 0xf8, 0xfb, 0xd3, 0x45, 0x37, 0x00, 0x70, 0xf9, 0xaa,
0x7d, 0x69, 0xf3, 0xf6, 0xbf, 0xd3, 0x46, 0xe7, 0x9a, 0xcc, 0xce, 0x3e, 0xed, 0x85, 0x0f, 0x31,
0x1d, 0x95, 0xe9, 0x6b, 0xbe, 0xba, 0x88, 0xee, 0x2d, 0x6f, 0xa4, 0x9f, 0x8b, 0xaf, 0x7f, 0x0c,
0xdb, 0xe8, 0x89, 0x31, 0x2e, 0x94, 0x8b, 0x4a, 0xe8, 0x12, 0x0e, 0xf5, 0xb5, 0x13, 0xae, 0xa4,
0xdc, 0x3b, 0x26, 0xff, 0x2d, 0x45, 0x34, 0x82, 0x0e, 0x87, 0xb2, 0x9e, 0xa7, 0x0b, 0xd1, 0x93,
0x0a, 0xe0, 0x41, 0x40, 0x2c, 0x45, 0x63, 0x60, 0x58, 0xcb, 0x1d, 0x05, 0xcd, 0xab, 0x19, 0x37,
0x03, 0xb3, 0xa2, 0x32, 0xf3, 0xfe, 0xc7, 0x56, 0x9e, 0x31, 0x36, 0x64, 0xe4, 0x58, 0x22, 0x01,
0x7f, 0x5a, 0x21, 0x8e, 0x38, 0xaa, 0x33, 0x41, 0xac, 0x32, 0xca, 0x68, 0xd2, 0xf0, 0x70, 0x38,
0x7c, 0x46, 0xc0, 0xf7, 0xb5, 0x45, 0xb1, 0x73, 0x83, 0xa5, 0xbc, 0x12, 0x97, 0xf7, 0xfc, 0xcc,
0x7c, 0xd7, 0x02, 0xa1, 0xf4, 0xc8, 0xb8, 0x9b, 0xe7, 0xe0, 0x6e, 0x9e, 0x93, 0x51, 0x85, 0xb4,
0xd6, 0xe9, 0x20, 0x96, 0x38, 0x06, 0xb2, 0x70, 0xa1, 0xbd, 0x7b, 0xf7, 0x72, 0x2e, 0x4a, 0x26,
0x1b, 0x8d, 0x81, 0x3c, 0x16, 0x81, 0xe8, 0x49, 0xc2, 0xfd, 0x3d, 0x9c, 0xcb, 0xa2, 0x23, 0xc1,
0x54, 0x07, 0xc4, 0xd4, 0xc2, 0x6e, 0xe0, 0x42, 0x80, 0xe3, 0x87, 0xff, 0xc5, 0x9e, 0xcd, 0x77,
0xf0, 0x25, 0x92, 0xdd, 0x66, 0x54, 0xf1, 0x98, 0xa1, 0xf9, 0x0e, 0x50, 0xce, 0x97, 0x4b, 0xc2,
0x5a, 0xf1, 0xb0, 0x12, 0x11, 0x9e, 0xbe, 0x4b, 0xd5, 0x87, 0xe1, 0x7a, 0xa5, 0x98, 0x03, 0x78,
0xce, 0x65, 0xab, 0x95, 0x70, 0x58, 0x1b, 0xbc, 0xae, 0x35, 0xaf, 0x2c, 0x5c, 0x26, 0xff, 0xfd,
0x3f, 0x14, 0xf4, 0x82, 0x81, 0xaa, 0xdf, 0xbd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE icon_kicad_xpm[1] = {{ png, sizeof( png ), "icon_kicad_xpm" }};

View File

@ -0,0 +1,198 @@
/* 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, 0x30, 0x00, 0x00, 0x00, 0x30, 0x08, 0x06, 0x00, 0x00, 0x00, 0x57, 0x02, 0xf9,
0x87, 0x00, 0x00, 0x0b, 0x52, 0x49, 0x44, 0x41, 0x54, 0x68, 0xde, 0xd5, 0x99, 0x09, 0x54, 0x94,
0xe5, 0x1a, 0xc7, 0xa9, 0xe3, 0xed, 0xda, 0x4d, 0xd3, 0xf2, 0xea, 0xb5, 0xa3, 0xa6, 0xe6, 0x92,
0x27, 0xcb, 0x15, 0x17, 0xd4, 0xb2, 0xcc, 0xad, 0x3c, 0x79, 0x5d, 0x50, 0x49, 0x73, 0x89, 0xbc,
0x75, 0xbb, 0x5a, 0x9d, 0xec, 0x5e, 0x0d, 0x2d, 0xbd, 0x5a, 0x89, 0x4b, 0x79, 0x2c, 0x20, 0x05,
0x52, 0x13, 0x50, 0x60, 0x40, 0x16, 0x95, 0x65, 0x58, 0x4c, 0xf6, 0x7d, 0x90, 0xd8, 0x84, 0x61,
0x0b, 0x66, 0x61, 0x16, 0xd6, 0x11, 0x44, 0x41, 0xff, 0xf7, 0x7d, 0xde, 0xf8, 0xc6, 0xcf, 0xd9,
0x00, 0xeb, 0x66, 0xcd, 0x39, 0xff, 0x33, 0xce, 0x30, 0xdf, 0x7c, 0xcf, 0xef, 0x7d, 0xfe, 0xcf,
0xf3, 0x3e, 0xef, 0x68, 0x67, 0x67, 0x67, 0xd7, 0x9b, 0x69, 0x38, 0xd3, 0x18, 0xa6, 0x51, 0xbf,
0xb1, 0xc6, 0x74, 0xde, 0xfb, 0x11, 0x00, 0x76, 0xf7, 0x22, 0x7a, 0x8c, 0x60, 0x7a, 0x8f, 0xe9,
0x33, 0xa6, 0x3d, 0xbf, 0xb1, 0xf6, 0x32, 0xfd, 0x9b, 0x69, 0xee, 0xbd, 0x42, 0xd0, 0xe3, 0x39,
0xa6, 0x63, 0x4c, 0x91, 0x3b, 0x77, 0xee, 0xbc, 0xe2, 0xe7, 0xe7, 0x57, 0x2e, 0xe8, 0xcc, 0x99,
0x33, 0x66, 0x3a, 0x7b, 0xf6, 0xec, 0x5d, 0x0a, 0x08, 0x08, 0xa8, 0x91, 0x48, 0x24, 0x6a, 0x5b,
0x0a, 0x0a, 0x0a, 0x52, 0xb1, 0xcf, 0x55, 0x30, 0x95, 0x0b, 0x3a, 0xc3, 0xae, 0xf5, 0xf1, 0xf5,
0xab, 0xf0, 0x3e, 0x79, 0xb2, 0xcc, 0xde, 0x7e, 0xba, 0x17, 0xbb, 0xbf, 0x03, 0xd3, 0x43, 0xf7,
0x0a, 0xe0, 0xc9, 0x24, 0xd5, 0x68, 0xb5, 0xed, 0x4d, 0xcd, 0xcd, 0x68, 0x66, 0x32, 0x18, 0x0c,
0xb8, 0x76, 0xed, 0x1a, 0x5a, 0x5a, 0x5a, 0xd0, 0xd2, 0xda, 0x8a, 0xd6, 0xeb, 0xd7, 0x71, 0x9d,
0xa9, 0xad, 0xad, 0x0d, 0x37, 0x6e, 0xdc, 0xc0, 0xcd, 0x9b, 0x37, 0xb9, 0xda, 0xdb, 0xdb, 0x8d,
0xea, 0xe8, 0xe8, 0x30, 0xea, 0xd6, 0xad, 0x5b, 0x46, 0xdd, 0xbe, 0x7d, 0x9b, 0xab, 0xa5, 0xc9,
0x80, 0xca, 0xe2, 0x0a, 0xdc, 0xbc, 0xf1, 0xf3, 0x75, 0xad, 0xec, 0x7b, 0xeb, 0xeb, 0xeb, 0x71,
0xb5, 0x44, 0x7e, 0x6b, 0xd2, 0xe4, 0xa9, 0xdf, 0xb0, 0x18, 0x26, 0x32, 0xf5, 0xba, 0x57, 0x80,
0x68, 0x23, 0x00, 0x0b, 0xfe, 0xd7, 0x06, 0xc8, 0x94, 0xa6, 0x22, 0xd8, 0xd9, 0x1b, 0xd2, 0x0f,
0x03, 0x11, 0xf2, 0xce, 0x09, 0x44, 0x7c, 0x1b, 0x02, 0x43, 0xb3, 0x01, 0x75, 0x75, 0x75, 0x28,
0x2f, 0xaf, 0x40, 0x4a, 0x5a, 0xfa, 0xad, 0xa1, 0x23, 0x46, 0xee, 0x63, 0x71, 0x8c, 0x65, 0x7a,
0xf0, 0x57, 0x05, 0x68, 0xfd, 0x85, 0x00, 0x9a, 0x6a, 0x35, 0x24, 0xce, 0x9e, 0x50, 0x78, 0xfc,
0x08, 0x8d, 0x77, 0x31, 0x5a, 0xce, 0x56, 0x23, 0x75, 0xe7, 0x45, 0xf8, 0xbd, 0xe5, 0x81, 0x4a,
0x79, 0x25, 0x8a, 0x8b, 0x8b, 0x59, 0x16, 0x4a, 0x10, 0x21, 0x95, 0x76, 0xfc, 0x75, 0xd0, 0xe0,
0x8f, 0x58, 0x2c, 0xc3, 0x98, 0x1e, 0xf8, 0x5d, 0x00, 0x74, 0xb4, 0x77, 0xc0, 0xc7, 0xd9, 0x0d,
0x05, 0x5f, 0x24, 0x40, 0x77, 0xa2, 0x04, 0x1d, 0x21, 0x5a, 0xe8, 0x4f, 0x96, 0x42, 0xf1, 0xed,
0x8f, 0x28, 0x3a, 0x98, 0x8c, 0x80, 0x7f, 0x1c, 0x87, 0x2c, 0x53, 0x86, 0xb4, 0xf4, 0x74, 0x96,
0x89, 0x72, 0xf8, 0x49, 0x82, 0x6f, 0xf4, 0xed, 0xdf, 0xdf, 0x99, 0xc5, 0x33, 0xe8, 0x77, 0x01,
0xf0, 0xf1, 0xb6, 0xed, 0x38, 0xf5, 0xe6, 0x51, 0x5c, 0x39, 0x92, 0x00, 0xed, 0xa9, 0xab, 0xd0,
0x33, 0x08, 0x85, 0x47, 0x1e, 0x94, 0xc7, 0xf2, 0x51, 0x77, 0x4a, 0xce, 0xc0, 0x12, 0xe1, 0xf9,
0xce, 0x57, 0x48, 0x4c, 0x4a, 0x82, 0x5c, 0x2e, 0x67, 0x2a, 0xc5, 0xd7, 0xdf, 0x9d, 0xba, 0xf6,
0xd0, 0xc3, 0x7d, 0x1c, 0x59, 0x4c, 0xfd, 0xee, 0x6b, 0x0d, 0x84, 0x87, 0x87, 0xe3, 0xb5, 0xd7,
0x5e, 0x83, 0xaf, 0xaf, 0x2f, 0xce, 0x9f, 0x3f, 0x8f, 0x8c, 0x98, 0x14, 0xc4, 0xec, 0x94, 0x20,
0xdf, 0x35, 0x91, 0x83, 0x50, 0x46, 0xca, 0x8e, 0x64, 0xc2, 0x6f, 0xa3, 0x3b, 0x92, 0x53, 0x52,
0x90, 0x92, 0x92, 0x8a, 0xc6, 0xc6, 0x06, 0xe4, 0xe7, 0xff, 0x88, 0x3d, 0x5f, 0x7d, 0x53, 0xd7,
0xab, 0x57, 0xaf, 0x85, 0x2c, 0xae, 0xbf, 0xdc, 0x17, 0x80, 0x8a, 0x8a, 0x0a, 0xbc, 0xf4, 0xd2,
0x4b, 0x38, 0x7a, 0xf4, 0x28, 0xdc, 0xdc, 0xdc, 0x90, 0x9d, 0x9d, 0x8d, 0xd3, 0xa7, 0x4f, 0x83,
0xb5, 0x6a, 0x5c, 0x72, 0x0d, 0x47, 0xa5, 0x5b, 0x0e, 0xaa, 0xbe, 0x91, 0x21, 0xe6, 0x83, 0x00,
0x78, 0x7f, 0xf8, 0x35, 0xd2, 0xd3, 0x33, 0x70, 0xe1, 0xe2, 0x45, 0x0e, 0x40, 0x85, 0x9d, 0x95,
0x9d, 0x89, 0x0f, 0xf6, 0x1e, 0x50, 0x76, 0xd5, 0x5e, 0x2d, 0x03, 0xfc, 0xc2, 0x36, 0x4a, 0xd7,
0xcc, 0x9d, 0x3b, 0x17, 0x3b, 0x76, 0xec, 0xc0, 0xe1, 0xc3, 0x87, 0x51, 0x54, 0x54, 0xc4, 0xb3,
0xe1, 0xe1, 0xe1, 0x01, 0xb6, 0x77, 0x20, 0x48, 0x12, 0x84, 0x28, 0x97, 0x40, 0xa4, 0xee, 0xb8,
0xc0, 0xed, 0x55, 0x59, 0x59, 0x85, 0x9c, 0x1c, 0x19, 0x22, 0x22, 0xa3, 0x50, 0x5a, 0x2a, 0x67,
0xdf, 0xdf, 0x06, 0xad, 0x56, 0xc3, 0xb2, 0x92, 0x84, 0xb7, 0x77, 0x7d, 0x5e, 0x64, 0xab, 0xbd,
0x76, 0x09, 0x70, 0x4d, 0x00, 0x60, 0xea, 0x2e, 0xc0, 0xea, 0xd5, 0xab, 0x31, 0x6b, 0xd6, 0x2c,
0xb0, 0x8d, 0x8f, 0xad, 0x68, 0x23, 0x62, 0x63, 0x63, 0x79, 0x26, 0xc2, 0xc2, 0xc2, 0xe0, 0xe3,
0xe3, 0x83, 0xfd, 0xfb, 0xf7, 0xe3, 0x9d, 0x25, 0x9b, 0x20, 0x79, 0xd3, 0x13, 0x55, 0xac, 0x0b,
0xa9, 0x54, 0x2a, 0xe4, 0x17, 0x14, 0xb0, 0xcf, 0xc5, 0x41, 0x96, 0x2b, 0xe3, 0xf6, 0x6b, 0x6b,
0xbb, 0x0e, 0xa5, 0x52, 0x81, 0x8b, 0x51, 0x51, 0xd8, 0xb0, 0x7d, 0xef, 0xe5, 0xce, 0xb1, 0xe3,
0xc1, 0xae, 0x01, 0x9a, 0x9a, 0x8c, 0x00, 0x86, 0x7b, 0x00, 0x38, 0x76, 0xec, 0x18, 0x1e, 0x7f,
0xfc, 0x71, 0x2c, 0x59, 0xb2, 0x04, 0x9b, 0x37, 0x6f, 0xe6, 0x81, 0x6f, 0xdf, 0xbe, 0x1d, 0x81,
0x81, 0x81, 0xfc, 0x6f, 0x5e, 0x5e, 0x5e, 0xfc, 0xfd, 0x27, 0x9f, 0x7c, 0x12, 0x69, 0x49, 0x69,
0x7c, 0x91, 0xc8, 0x32, 0x72, 0x79, 0x19, 0x92, 0x93, 0x53, 0x90, 0x94, 0x9c, 0xc4, 0xf7, 0x0d,
0x82, 0x68, 0x6d, 0x6d, 0x41, 0x55, 0x55, 0x25, 0x02, 0xce, 0x9d, 0xc3, 0xc6, 0xff, 0x7c, 0x16,
0x64, 0xa9, 0xbd, 0x5a, 0x05, 0x68, 0x16, 0x03, 0x74, 0x76, 0x22, 0x31, 0x80, 0x25, 0x88, 0xbc,
0xbc, 0x3c, 0xf4, 0xef, 0xdf, 0x1f, 0x2f, 0xbf, 0xfc, 0x32, 0x16, 0x2d, 0x5a, 0x84, 0x95, 0x2b,
0x57, 0x62, 0xea, 0xd4, 0xa9, 0xbc, 0x16, 0xdc, 0xdd, 0xdd, 0xe1, 0xef, 0xef, 0x8f, 0x2d, 0x5b,
0xb6, 0x60, 0xf6, 0xec, 0xd9, 0xdc, 0x5a, 0xc2, 0x6e, 0xdc, 0xd0, 0xd0, 0x00, 0x85, 0x42, 0x81,
0xdc, 0x2b, 0xb9, 0x90, 0xc6, 0x48, 0xf9, 0x7b, 0x04, 0x41, 0x0b, 0x62, 0x30, 0x34, 0xf3, 0xce,
0xf4, 0x7d, 0x50, 0x28, 0xde, 0xfe, 0x78, 0x9f, 0xb7, 0x69, 0x7b, 0xbd, 0x1b, 0x40, 0xa3, 0xe9,
0x16, 0x40, 0x9b, 0x05, 0x00, 0x1a, 0x09, 0x9e, 0x78, 0xe2, 0x09, 0x4c, 0x9e, 0x3c, 0x19, 0x0e,
0x0e, 0x0e, 0x58, 0xb7, 0x6e, 0x1d, 0xb7, 0xd1, 0xa4, 0x49, 0x93, 0xf8, 0xeb, 0x8d, 0x1b, 0x37,
0x62, 0xeb, 0xd6, 0xad, 0x78, 0xe5, 0x95, 0x57, 0x38, 0x98, 0x10, 0x20, 0x5d, 0x4f, 0xd9, 0xa6,
0x2c, 0x94, 0x95, 0x95, 0xe3, 0xf2, 0xe5, 0x04, 0x84, 0x84, 0x86, 0x22, 0x22, 0x22, 0x12, 0x29,
0xa9, 0xa9, 0xcc, 0x5e, 0x4a, 0x6e, 0xc3, 0x82, 0x82, 0x7c, 0x04, 0x46, 0x5f, 0xba, 0xfd, 0xc1,
0xee, 0x2f, 0x0e, 0x89, 0xdb, 0xab, 0x45, 0x80, 0x26, 0x31, 0x80, 0x68, 0x2f, 0x20, 0x80, 0xeb,
0x04, 0x60, 0xc1, 0x46, 0x14, 0xe4, 0x88, 0x11, 0x23, 0xf0, 0xe2, 0x8b, 0x2f, 0xc2, 0xd9, 0xd9,
0x19, 0xf3, 0xe6, 0xcd, 0xe3, 0xc1, 0x4f, 0x9f, 0x3e, 0x1d, 0x0b, 0x17, 0x2e, 0xe4, 0x99, 0x18,
0x3d, 0x7a, 0x34, 0xc6, 0x8f, 0x1f, 0xcf, 0xbf, 0x8f, 0x1e, 0x64, 0x13, 0xba, 0x96, 0xbe, 0x97,
0xee, 0xcb, 0xee, 0x8f, 0x92, 0x92, 0x52, 0x64, 0x64, 0x64, 0x22, 0x2e, 0x2e, 0x9e, 0x77, 0x25,
0x82, 0x49, 0x4c, 0x4c, 0x62, 0x56, 0xaa, 0x42, 0x46, 0x66, 0x3a, 0x62, 0xb3, 0xf2, 0x3b, 0x5c,
0x3e, 0x3f, 0xf0, 0x31, 0x8b, 0xf7, 0x61, 0x8b, 0x00, 0x8d, 0x62, 0x80, 0x6e, 0x6e, 0x66, 0xbb,
0x76, 0xed, 0xc2, 0xc0, 0x81, 0x03, 0xb1, 0x78, 0xf1, 0x62, 0x6c, 0xd8, 0xb0, 0x81, 0xaf, 0xf2,
0xc4, 0x89, 0x13, 0x31, 0x65, 0xca, 0x14, 0x0e, 0x42, 0x70, 0x43, 0x87, 0x0e, 0xe5, 0xf6, 0x2a,
0x61, 0x23, 0x03, 0xad, 0x3e, 0x3d, 0xc4, 0x59, 0xa0, 0x7b, 0x90, 0x95, 0xd4, 0x6a, 0x35, 0xaf,
0x87, 0xdc, 0xdc, 0x2b, 0x2c, 0x03, 0x69, 0x88, 0x8f, 0xbf, 0x84, 0xa8, 0x68, 0x29, 0xa2, 0xa5,
0x31, 0xc8, 0xcd, 0x63, 0xef, 0xa5, 0xa5, 0x22, 0xaf, 0x4c, 0x71, 0x73, 0xda, 0x34, 0x87, 0xf9,
0x2c, 0xe6, 0x3f, 0xdd, 0x05, 0x50, 0x2b, 0x06, 0xe8, 0x66, 0x27, 0x8a, 0x8f, 0x8f, 0xe7, 0x81,
0xbd, 0xfa, 0xea, 0xab, 0x58, 0xba, 0x74, 0x29, 0x96, 0x2d, 0x5b, 0xc6, 0x57, 0x9e, 0xac, 0xf4,
0xc2, 0x0b, 0x2f, 0xf0, 0x76, 0x4a, 0x2b, 0xdf, 0xa7, 0x4f, 0x1f, 0xde, 0x95, 0x84, 0xc9, 0x54,
0x78, 0x88, 0x21, 0xe8, 0x5e, 0x04, 0x41, 0x99, 0xa8, 0xa8, 0xa8, 0xe4, 0xed, 0x57, 0x26, 0xcb,
0xe5, 0x19, 0x21, 0x98, 0x64, 0xb6, 0xd1, 0xe5, 0xc8, 0x64, 0xc8, 0xc9, 0xcd, 0xc3, 0xbc, 0xf9,
0x0b, 0x0f, 0x53, 0x3d, 0x74, 0x09, 0x60, 0xab, 0x0e, 0xa8, 0xf0, 0x06, 0x0c, 0x18, 0x80, 0x99,
0x33, 0x67, 0xe2, 0xf9, 0xe7, 0x9f, 0x87, 0x93, 0x93, 0x13, 0xff, 0x37, 0x05, 0x4f, 0x85, 0x4a,
0xd6, 0x79, 0xe6, 0x99, 0x67, 0x78, 0xf0, 0xeb, 0xd7, 0xaf, 0x37, 0x06, 0x6f, 0x0a, 0x21, 0x58,
0x89, 0x16, 0x85, 0xee, 0x43, 0x76, 0xa2, 0x9a, 0xa0, 0xf6, 0x5a, 0xc9, 0xac, 0x43, 0x7b, 0x03,
0x0d, 0x7c, 0x04, 0x44, 0xcf, 0xf4, 0x7a, 0xd9, 0xf2, 0x95, 0x41, 0x9d, 0x87, 0x31, 0x0b, 0x00,
0xa6, 0x85, 0x6c, 0xa1, 0x0e, 0xe8, 0x35, 0x05, 0x37, 0x76, 0xec, 0x58, 0x1e, 0xfc, 0xa6, 0x4d,
0x9b, 0xf8, 0x6a, 0xd3, 0xea, 0xcf, 0x98, 0x31, 0x83, 0x77, 0x21, 0x02, 0x79, 0xec, 0xb1, 0xc7,
0x30, 0x6e, 0xdc, 0x38, 0x1e, 0x9c, 0xf8, 0x6c, 0x20, 0x06, 0x10, 0x20, 0x84, 0x4c, 0xd0, 0x7d,
0x68, 0xf1, 0xa8, 0x78, 0x09, 0x44, 0xa7, 0xd3, 0xa1, 0xb6, 0xb6, 0x96, 0xdb, 0x8b, 0x9e, 0xe9,
0xb5, 0xa3, 0xa3, 0xe3, 0x39, 0x16, 0xf3, 0x48, 0x73, 0x00, 0x76, 0x91, 0xb5, 0x3a, 0x10, 0xef,
0xc8, 0xd4, 0x55, 0x06, 0x0f, 0x1e, 0x8c, 0x05, 0x0b, 0x16, 0xf0, 0xbe, 0x4e, 0xab, 0x4d, 0xc1,
0x53, 0xb1, 0xce, 0x9f, 0x3f, 0x9f, 0x43, 0x50, 0x57, 0x22, 0x00, 0xa5, 0x52, 0x69, 0x76, 0xb8,
0xb1, 0x05, 0x21, 0x64, 0x83, 0x40, 0xe8, 0xde, 0xb4, 0x98, 0x4d, 0x9d, 0x0b, 0x2b, 0x2c, 0xee,
0x9a, 0x35, 0x6b, 0xce, 0x99, 0x67, 0xa0, 0xb6, 0xb6, 0xbd, 0x41, 0x0c, 0x60, 0xa5, 0x0e, 0x68,
0x1c, 0xa0, 0xc0, 0x68, 0x50, 0x63, 0x2b, 0xc1, 0xbd, 0x2f, 0x14, 0x2d, 0x75, 0x21, 0xca, 0xc8,
0x53, 0x4f, 0x3d, 0x85, 0xbe, 0x7d, 0xfb, 0xb2, 0x6e, 0x12, 0x67, 0xf5, 0x84, 0x66, 0x09, 0x42,
0xd8, 0xc4, 0x04, 0x10, 0xca, 0x48, 0x5b, 0x67, 0xe7, 0x33, 0xda, 0x97, 0xe9, 0xf5, 0xd7, 0x5f,
0xef, 0x02, 0xc0, 0xca, 0x7e, 0x50, 0x58, 0x58, 0xc8, 0x8b, 0x96, 0xec, 0x42, 0x1b, 0x16, 0x8d,
0x0d, 0xf6, 0xf6, 0xf6, 0xdc, 0x2e, 0x73, 0xe6, 0xcc, 0xe1, 0xef, 0x91, 0x65, 0x28, 0x78, 0x17,
0x17, 0x17, 0x8b, 0x07, 0x9c, 0xae, 0x20, 0x4c, 0x41, 0x04, 0x18, 0xf1, 0x8e, 0x6f, 0x1b, 0x80,
0xa9, 0xc9, 0x82, 0x8d, 0xc8, 0x8f, 0xc3, 0x86, 0x0d, 0xc3, 0xb3, 0xcf, 0x3e, 0xcb, 0x37, 0x29,
0x2a, 0x4c, 0x0a, 0x9a, 0xac, 0x43, 0xc5, 0x4b, 0x6d, 0x74, 0xc2, 0x84, 0x09, 0xe8, 0xd7, 0xaf,
0x1f, 0xb7, 0x90, 0x78, 0x3a, 0xed, 0x0e, 0x84, 0x35, 0x10, 0x41, 0xe2, 0x6b, 0xac, 0x03, 0xb0,
0x36, 0xd6, 0x68, 0xc5, 0x46, 0xe4, 0x73, 0x02, 0xa0, 0xde, 0x4e, 0xbe, 0x27, 0xaf, 0x53, 0xf0,
0xd3, 0xa6, 0x4d, 0xe3, 0xb5, 0x40, 0x99, 0x18, 0x34, 0x68, 0x10, 0x97, 0x5e, 0xaf, 0x37, 0x1b,
0xb1, 0xbb, 0x0b, 0x61, 0x09, 0xc4, 0xf4, 0x61, 0x15, 0xa0, 0x9e, 0x01, 0x58, 0xb2, 0xd1, 0xc1,
0x43, 0x87, 0x78, 0xcb, 0xa4, 0x7e, 0xbf, 0x76, 0xed, 0x5a, 0x3e, 0xac, 0x09, 0xbe, 0xa7, 0x59,
0x87, 0xda, 0x26, 0x0d, 0x68, 0x64, 0x1d, 0x19, 0xeb, 0xd5, 0xd6, 0xce, 0x09, 0x3d, 0x81, 0xb0,
0x05, 0x63, 0x11, 0x40, 0x2d, 0x06, 0x10, 0xd9, 0x88, 0x4e, 0x4b, 0x64, 0x0b, 0xca, 0x00, 0x01,
0xac, 0x58, 0xb1, 0x82, 0x07, 0x2e, 0x6c, 0x56, 0x04, 0x40, 0xed, 0x94, 0xfa, 0x3d, 0x1d, 0x5e,
0x6c, 0x1d, 0x74, 0xac, 0x41, 0x74, 0x07, 0x44, 0x2c, 0xdb, 0x00, 0xa2, 0x2c, 0xd4, 0xb0, 0xcd,
0x8a, 0xc6, 0x04, 0x6a, 0x8f, 0x34, 0x12, 0xd0, 0xea, 0x93, 0xff, 0x29, 0x78, 0x7a, 0xa6, 0x7e,
0x4f, 0x35, 0x41, 0x2b, 0x4f, 0x5d, 0xc9, 0xd2, 0x98, 0xfd, 0xff, 0x80, 0xb0, 0x0a, 0x50, 0xc7,
0xa6, 0x4a, 0xb1, 0x8d, 0x7c, 0xbc, 0xe6, 0xc3, 0xd7, 0x73, 0x32, 0xf6, 0xef, 0x9e, 0x08, 0xe7,
0x37, 0x9d, 0xf8, 0x6a, 0x8b, 0x87, 0x34, 0xca, 0x04, 0xcd, 0xff, 0xc3, 0x87, 0x0f, 0xe7, 0x76,
0xb3, 0x76, 0x56, 0xe8, 0x09, 0x44, 0x77, 0x60, 0x2c, 0x02, 0xa8, 0xd4, 0xea, 0x3b, 0x00, 0x4c,
0x3a, 0x4d, 0x11, 0x0a, 0xb3, 0x9c, 0xd0, 0xa0, 0x8d, 0xc0, 0x4f, 0xa5, 0x07, 0x11, 0x21, 0xb1,
0xc7, 0xbf, 0x36, 0x3f, 0x6d, 0x1c, 0xd2, 0xa8, 0xf3, 0x0c, 0x19, 0x32, 0x84, 0xdb, 0x8b, 0x86,
0x34, 0xd3, 0x21, 0xef, 0xd7, 0x80, 0xb0, 0x26, 0xdb, 0x00, 0x9d, 0x10, 0x95, 0xa5, 0x9e, 0x50,
0x96, 0x7f, 0x09, 0x43, 0x43, 0x12, 0x1a, 0x75, 0x91, 0xd0, 0xab, 0xfc, 0xf1, 0x43, 0xc4, 0x72,
0xbc, 0xff, 0xee, 0xd3, 0x7c, 0x1f, 0x18, 0x35, 0x6a, 0x14, 0xf7, 0xbd, 0x44, 0x22, 0xb1, 0x7a,
0xd8, 0xe9, 0x2e, 0x44, 0x4f, 0x41, 0xac, 0x02, 0xe8, 0x59, 0xaf, 0x17, 0xb2, 0x50, 0x98, 0xb5,
0x16, 0x8d, 0xfa, 0x68, 0x34, 0xe9, 0xa5, 0xa8, 0xaf, 0x0d, 0x86, 0x4e, 0x79, 0x12, 0x9a, 0x9f,
0xbe, 0xc6, 0xf9, 0x80, 0x05, 0x78, 0x63, 0xf5, 0x48, 0xf4, 0x65, 0xc1, 0x2f, 0x5f, 0xb8, 0x18,
0xc9, 0x41, 0x21, 0x48, 0x09, 0x0e, 0x45, 0xca, 0xb9, 0x30, 0xa4, 0x8a, 0x94, 0x16, 0x12, 0x6e,
0x54, 0x7a, 0xe8, 0xf9, 0x1e, 0x29, 0x23, 0xec, 0x82, 0x4d, 0xad, 0x5d, 0xb3, 0x26, 0xcc, 0x0c,
0x40, 0xa9, 0x52, 0x19, 0x01, 0xf4, 0xba, 0x1a, 0x14, 0x64, 0xae, 0x40, 0x53, 0x5d, 0x1c, 0x1a,
0x34, 0xa1, 0xd0, 0x2b, 0x4f, 0x43, 0x53, 0xed, 0x0e, 0x55, 0x85, 0x2b, 0x6a, 0x4a, 0x77, 0xe2,
0xa8, 0xeb, 0x68, 0x8c, 0x61, 0xe3, 0xc2, 0x87, 0x93, 0x67, 0x60, 0xdb, 0x7d, 0xd0, 0x7a, 0x47,
0xc7, 0x08, 0xeb, 0x00, 0x4c, 0xd5, 0x15, 0xc1, 0x28, 0xcb, 0xdf, 0xc1, 0xfc, 0x7f, 0x1e, 0x75,
0x2a, 0x3f, 0x68, 0x6b, 0x8e, 0x41, 0x5d, 0x79, 0x88, 0x05, 0xbf, 0x0b, 0xa9, 0xf1, 0x4e, 0x38,
0xe1, 0xf6, 0x1c, 0x2e, 0xb1, 0xc3, 0x36, 0x7d, 0xd9, 0x47, 0x53, 0x1d, 0xe0, 0xba, 0x6c, 0xd5,
0x2f, 0xd2, 0x81, 0xe5, 0xab, 0x7b, 0xa4, 0x37, 0x56, 0xad, 0xba, 0x60, 0x0e, 0xa0, 0x54, 0xb5,
0xeb, 0xd8, 0x0e, 0x4a, 0x10, 0x85, 0xd9, 0x5b, 0xa0, 0xfe, 0xc9, 0x1b, 0x75, 0x6a, 0x7f, 0x16,
0xbc, 0x17, 0x6a, 0xab, 0xbe, 0x62, 0x96, 0x7a, 0x17, 0xc1, 0xbe, 0xb3, 0x91, 0x7c, 0x69, 0x37,
0x2b, 0x72, 0x2d, 0x64, 0xf1, 0x3f, 0x70, 0x00, 0x97, 0x39, 0xf3, 0x8c, 0x83, 0x9e, 0xf8, 0xd4,
0xd6, 0xdd, 0x9a, 0xe8, 0x4e, 0x7d, 0x98, 0xca, 0x62, 0x0d, 0xb0, 0xb1, 0x97, 0x03, 0x68, 0xb4,
0xb5, 0xf8, 0xce, 0x7d, 0x26, 0xf3, 0xbd, 0x04, 0x3a, 0xc5, 0x09, 0x54, 0xcb, 0x5d, 0x11, 0x1d,
0xb2, 0x04, 0x17, 0x83, 0x57, 0x41, 0xa5, 0x28, 0x34, 0xce, 0x48, 0xb2, 0xb8, 0x4b, 0x77, 0x00,
0x4c, 0x4e, 0x6d, 0x5d, 0x41, 0x74, 0x05, 0xd2, 0x15, 0x90, 0x45, 0x00, 0x05, 0x03, 0xd0, 0xb2,
0xc3, 0x42, 0x68, 0xb0, 0x1b, 0x7a, 0xf7, 0xee, 0x05, 0xc7, 0x15, 0x0e, 0xc8, 0x48, 0xd8, 0x8c,
0x73, 0xbe, 0x73, 0x51, 0x5c, 0x10, 0x6e, 0x36, 0x23, 0x89, 0x01, 0x84, 0x69, 0xb5, 0xa7, 0x10,
0xdd, 0x05, 0x31, 0x95, 0x4d, 0x80, 0x55, 0xcb, 0xa7, 0xe0, 0x81, 0x07, 0xec, 0xf0, 0xc8, 0x23,
0xbd, 0xf0, 0xad, 0xdb, 0xdb, 0x6c, 0x30, 0xd3, 0x42, 0x3c, 0x62, 0x08, 0x10, 0x77, 0x01, 0x88,
0x46, 0xee, 0x23, 0x9b, 0x9d, 0xb0, 0x65, 0xea, 0x28, 0x6c, 0xb1, 0x1f, 0x8d, 0xad, 0x5d, 0xa8,
0x4e, 0xad, 0x32, 0x03, 0x91, 0x67, 0xa5, 0x61, 0xd7, 0xac, 0xf1, 0x66, 0x0a, 0x3d, 0xf8, 0x5f,
0xdb, 0x00, 0x35, 0x0a, 0x65, 0xbb, 0x46, 0xab, 0xc5, 0xdf, 0x06, 0xf6, 0xc6, 0x74, 0xfb, 0x21,
0xc8, 0xcd, 0x49, 0xe4, 0x05, 0x2d, 0xde, 0xdc, 0xc4, 0x83, 0x5e, 0x8e, 0x08, 0x40, 0x38, 0x7a,
0x12, 0xc4, 0x81, 0xb5, 0x4b, 0xf1, 0xd6, 0xd3, 0x83, 0xba, 0x25, 0x9d, 0x4a, 0x61, 0x96, 0x91,
0xe2, 0x94, 0x04, 0xbc, 0xcf, 0xfe, 0x66, 0x2a, 0xff, 0x4f, 0xb6, 0x75, 0x05, 0xa0, 0x68, 0x2f,
0x2b, 0x2b, 0xc2, 0xa9, 0x13, 0xfb, 0x41, 0xb5, 0x20, 0x14, 0x34, 0x01, 0x88, 0x47, 0x0c, 0x01,
0x22, 0x27, 0x36, 0xfe, 0x0e, 0x80, 0xe8, 0xfc, 0xec, 0xda, 0x43, 0x00, 0x53, 0x6b, 0x55, 0xe6,
0xe5, 0xe0, 0xcb, 0x55, 0x8b, 0xcc, 0x24, 0x3d, 0x7e, 0xd4, 0xf8, 0x19, 0x8b, 0x00, 0xd5, 0x35,
0x8a, 0x76, 0x76, 0x2e, 0x06, 0x65, 0x81, 0xac, 0x24, 0x00, 0x18, 0x37, 0x37, 0xf1, 0x9c, 0xc4,
0x94, 0x2d, 0x02, 0x10, 0x0e, 0x3e, 0x04, 0xd1, 0x48, 0x9f, 0x61, 0x9f, 0x6d, 0xec, 0x54, 0x13,
0x7b, 0x4d, 0x6a, 0x66, 0xd7, 0x70, 0x31, 0x78, 0x43, 0xa7, 0xc4, 0xf5, 0x61, 0xab, 0x4e, 0x4c,
0x65, 0x11, 0xa0, 0xa8, 0xb8, 0xb8, 0x55, 0x5d, 0xab, 0x41, 0xad, 0x46, 0xcb, 0x20, 0x74, 0x96,
0x21, 0x58, 0x20, 0x02, 0x44, 0x76, 0x4c, 0x9c, 0x11, 0x40, 0x28, 0x6c, 0xf1, 0x09, 0xce, 0xf8,
0x63, 0x80, 0xa8, 0xb8, 0x85, 0x36, 0x2b, 0xfe, 0x95, 0xcf, 0x28, 0x13, 0x10, 0x5b, 0x62, 0x07,
0x28, 0x7f, 0x33, 0x80, 0x84, 0xc4, 0xc4, 0x7a, 0x36, 0x91, 0xc2, 0x34, 0x0b, 0x46, 0x2b, 0x99,
0x40, 0xdc, 0x05, 0x20, 0xea, 0x4e, 0x65, 0xf2, 0x1c, 0x94, 0x14, 0xa5, 0xa0, 0xa4, 0x38, 0x15,
0xa5, 0xa4, 0xab, 0x69, 0x90, 0x93, 0x4a, 0xd2, 0x51, 0x26, 0xa8, 0x34, 0x03, 0xe5, 0x22, 0x55,
0xc8, 0xb3, 0x8c, 0x20, 0xd7, 0xd8, 0x77, 0xe5, 0x86, 0x4a, 0x90, 0x1b, 0x16, 0x84, 0x2b, 0x56,
0xf4, 0xdc, 0x98, 0xd1, 0x3e, 0xe6, 0x00, 0x09, 0x89, 0xf5, 0x2a, 0x75, 0x2d, 0x7e, 0xce, 0x82,
0x15, 0x08, 0x51, 0x3d, 0x88, 0x01, 0x84, 0xc2, 0x26, 0x88, 0x4f, 0xb7, 0x8d, 0xc1, 0x3f, 0xd7,
0xd9, 0xf5, 0x48, 0x5b, 0x37, 0xfd, 0xd9, 0x98, 0x19, 0xbd, 0xb2, 0x06, 0xfb, 0x58, 0x7d, 0xd8,
0xd2, 0xac, 0x31, 0x23, 0x83, 0x2d, 0x00, 0x24, 0x30, 0x00, 0x35, 0x28, 0x0b, 0x77, 0xac, 0x64,
0xb9, 0x1e, 0x48, 0x59, 0x62, 0x00, 0x51, 0x77, 0xba, 0x57, 0x00, 0xc1, 0x5e, 0x7a, 0x45, 0x75,
0x8f, 0x00, 0x26, 0x30, 0xd1, 0xef, 0xee, 0xb1, 0x7b, 0xf6, 0xee, 0xbd, 0x7a, 0x31, 0x22, 0x52,
0x1b, 0x11, 0x19, 0xa9, 0x8d, 0x24, 0x45, 0x45, 0x31, 0x45, 0x6b, 0xa3, 0xa2, 0xa5, 0xda, 0x68,
0xa9, 0x54, 0x2b, 0x25, 0xc5, 0xc4, 0x70, 0xc5, 0xc4, 0xc6, 0x6a, 0xc3, 0x03, 0x25, 0x75, 0x9e,
0x9f, 0xec, 0x36, 0x78, 0xef, 0xd9, 0x67, 0x88, 0x8d, 0x8b, 0xd3, 0xc6, 0x91, 0xe2, 0xe3, 0xb5,
0x27, 0xbd, 0x5c, 0x9a, 0x8e, 0xbb, 0xbd, 0x67, 0xf0, 0x34, 0x95, 0xbb, 0x48, 0x1e, 0xef, 0x1b,
0xbc, 0x44, 0xfa, 0xee, 0xf8, 0xb6, 0xe6, 0xc4, 0xc4, 0x44, 0x2d, 0xe9, 0x72, 0x5c, 0x9c, 0x2e,
0xf0, 0x8b, 0x4f, 0x9b, 0xad, 0xe9, 0xf4, 0xa7, 0xdb, 0x9b, 0x06, 0x3f, 0xda, 0xe7, 0x94, 0xf0,
0xcb, 0xdc, 0x38, 0xa6, 0x83, 0x4c, 0x67, 0x98, 0xe8, 0xcd, 0xef, 0xff, 0x00, 0xa2, 0x58, 0x3f,
0xef, 0xfc, 0x1f, 0x1b, 0xbb, 0x01, 0x4c, 0xf4, 0x53, 0xf5, 0x72, 0xa6, 0xbf, 0xff, 0x41, 0xb4,
0x82, 0x69, 0x1e, 0xd3, 0xa3, 0xff, 0x03, 0xc7, 0x89, 0x1e, 0x3b, 0x7a, 0xe5, 0x3e, 0x77, 0x00,
0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE icon_pagelayout_editor_xpm[1] = {{ png, sizeof( png ), "icon_pagelayout_editor_xpm" }};
//EOF

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -17,6 +17,7 @@ ICON_FILES="icon_3d.svg
icon_kicad.svg
icon_bitmap2component.svg
icon_pcbcalculator.svg
icon_pl_editor.svg
icon_cvpcb.svg
icon_pcbnew.svg
icon_eeschema.svg"

View File

@ -1,109 +1,761 @@
<svg xmlns="http://www.w3.org/2000/svg" height="48" width="48" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient id="ab" y2="4.2193" gradientUnits="userSpaceOnUse" x2="7.5955" gradientTransform="matrix(.88924 0 0 .78227 .62292 7.6472)" y1="43.994" x1="40.752">
<stop stop-color="#333" offset="0"/>
<stop stop-color="#474747" offset="1"/>
</linearGradient>
<linearGradient id="a" y2="19500" gradientUnits="userSpaceOnUse" x2="15000" y1="14100" x1="10100">
<stop stop-color="#f5fffa" offset="0"/>
<stop stop-color="#6f6d7f" offset="1.2"/>
</linearGradient>
<linearGradient id="b" y2="19500" gradientUnits="userSpaceOnUse" x2="15000" y1="14100" x1="10100">
<stop stop-color="#fff" stop-opacity="0.698" offset="0"/>
<stop stop-color="#5db7ff" stop-opacity="0.698" offset="1.2"/>
</linearGradient>
<linearGradient id="x" y2="19500" gradientUnits="userSpaceOnUse" x2="15000" y1="14100" x1="10100">
<stop stop-color="#f5ffff" offset="0"/>
<stop stop-color="#fff" stop-opacity="0" offset="1.2"/>
</linearGradient>
<radialGradient id="ac" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="17526" cx="18632" gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)" r="40170"/>
<radialGradient id="ad" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="17831" cx="18969" r="23166"/>
<radialGradient id="ae" xlink:href="#a" gradientUnits="userSpaceOnUse" cy="27370" cx="25538" gradientTransform="translate(-1.2031e-5,1.3252e-4)" r="3682.2"/>
<radialGradient id="af" xlink:href="#x" gradientUnits="userSpaceOnUse" cy="17398" cx="18401" gradientTransform="translate(-7.3214e-5,-4.3295e-5)" r="11888"/>
<radialGradient id="ag" xlink:href="#a" gradientUnits="userSpaceOnUse" cy="15674" cx="16467" gradientTransform="matrix(.0019151 0 0 .0019411 33.623 -11.394)" r="3055.2"/>
<radialGradient id="ah" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="17753" cx="18300" gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)" r="28430"/>
<radialGradient id="ai" xlink:href="#a" gradientUnits="userSpaceOnUse" cy="33086" cx="-2182.7" gradientTransform="matrix(.0032733 0 0 .0011356 31.832 15.718)" r="11540"/>
<radialGradient id="aj" xlink:href="#a" gradientUnits="userSpaceOnUse" cy="18596" cx="17070" gradientTransform="matrix(.0019519 0 0 .0019044 33.623 -11.394)" r="3734.6"/>
<linearGradient id="ao" y2="39368" xlink:href="#x" gradientUnits="userSpaceOnUse" x2="2312.5" gradientTransform="matrix(.0032733 0 0 .0011356 31.832 15.718)" y1="39560" x1="-1083.8"/>
<radialGradient id="ak" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="11246" cx="13190" gradientTransform="translate(-9.4474e-5,4.0964e-5)" r="16248"/>
<linearGradient id="ap" y2="18951" xlink:href="#a" gradientUnits="userSpaceOnUse" x2="12508" gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)" y1="-85.143" x1="-1308.3"/>
<radialGradient id="al" xlink:href="#a" gradientUnits="userSpaceOnUse" cy="29167" cx="26631" gradientTransform="translate(-1.1897e-4,-1.2562e-4)" r="4284.2"/>
<linearGradient id="y" y2="20482" gradientUnits="userSpaceOnUse" x2="6753.4" gradientTransform="matrix(.0013312 0 0 .0027924 31.832 15.718)" y1="27356" x1="850.32">
<stop stop-color="#a66500" offset="0"/>
<stop stop-color="#da8f00" offset="1"/>
</linearGradient>
<linearGradient id="z" y2="21261" gradientUnits="userSpaceOnUse" x2="3741.1" gradientTransform="matrix(.00126 0 0 .0029504 31.832 15.718)" y1="21261" x1="-3478.9">
<stop stop-color="#eda700" offset="0"/>
<stop stop-color="#fff" offset=".38824"/>
<stop stop-color="#ffcb50" offset="0.7"/>
<stop stop-color="#ed8700" offset="1"/>
</linearGradient>
<linearGradient id="aa" y2="29618" xlink:href="#a" gradientUnits="userSpaceOnUse" x2="24590" gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)" y1="405.03" x1="389.4"/>
<radialGradient id="am" gradientUnits="userSpaceOnUse" cy="10444" cx="11715" gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)" r="15132">
<stop stop-color="#f5ffff" stop-opacity=".49020" offset="0"/>
<stop stop-color="#fff" stop-opacity="0" offset="1.2"/>
</radialGradient>
</defs>
<g id="w" stroke-linejoin="round" stroke-linecap="round" transform="translate(-40.995 -.010729)">
<rect style="color:#000000" fill-opacity=".63253" ry=".89887" height="32.011" width="31.012" stroke="url(#ab)" display="block" y="10.5" x="6.495" fill="#fff"/>
<rect opacity=".79121" style="color:#000000" display="block" rx=".13187" ry=".11482" height="30.004" width="28.998" stroke="#fff" y="11.496" x="7.5" fill="none"/>
<path style="color:#000000" d="m10.184 13.468 5.316 0.032 3 3v8" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" d="m22.5 24.5v-8l-3-3" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" d="m26.5 24.5v-8l-3-3" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" d="m30.5 24.5v-11" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" d="m18.5 24.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m22.5 24.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m26.5 24.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m30.5 24.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m30.5 31.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m26.5 31.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m22.5 31.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m18.5 31.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m18.5 33.5v3l-2 2h-6" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" d="m22.5 33.5v5" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" d="m26.5 33.5v3l2 2h6" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" d="m30.5 33.5 2 2h2" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" display="block" d="m10.5 15.5h4l2 2v18l-1 1h-5v-21z" stroke="#000"/>
<rect style="color:#000000" display="block" ry="2.028" height="13" width="16" stroke="#000" y="22.5" x="16.5" fill="none"/>
</g>
<g transform="matrix(1.0331,0,0,1.042,-1.5828,-1.9714)">
<use xlink:href="#w" transform="matrix(.88516 .46528 -.46528 .88516 55.782 10.953)" height="48" width="48" y="0" x="0"/>
<use xlink:href="#an" transform="matrix(.97367 .22797 -.22797 .97367 9.8015 -7.4372)" height="48" width="48" y="0" x="0"/>
<use id="an" xlink:href="#w" transform="translate(37,1)" height="48" width="48" y="0" x="0"/>
<path d="m4 26v-13h28v13c-7 6-18-6-28 0z" fill-opacity=".51807" fill-rule="evenodd" fill="#fff"/>
</g>
<g fill-rule="evenodd" transform="translate(-6,53)" stroke="#000">
<path style="color:#000000" d="m31 31a10 10 0 1 1 -20 0 10 10 0 1 1 20 0z" fill-opacity=".3012" transform="translate(-47,-29)" stroke-width="1.5" fill="#72a0cf"/>
<rect style="color:#000000" stroke-width="1.0006" transform="matrix(.3824 -.924 .90415 .42722 0 0)" ry="1.1087" width="3.1174" y="-13.376" x="-14.434" height="17.268" fill="#2e3436"/>
</g>
<g transform="matrix(.69611 .19209 -.17663 .64009 -8.9202 1.1447)">
<g opacity=".18470" transform="matrix(.001928 0 0 .001928 33.342 -9.8361)">
<path fill-rule="evenodd" d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z" transform="matrix(1.0366,0,0,1.0366,-8223.8,-8828.8)"/>
<path fill-rule="evenodd" d="m19683 17385c-463.92-572.08-642.91-183.34-885.67-376.28-186.31-167 126.72-430.52-278.63-868.94l-1977.9 1967.3c337.99 333.5 523.59 91.68 730.6 375.12 155.23 225.6-17.11 519.24 482.71 842.41l1928.9-1939.6z"/>
<rect fill-rule="evenodd" transform="rotate(-45)" height="1619" width="4666.7" y="23097" x="-2064"/>
<path fill-rule="evenodd" d="m19649 9700.3c0 5058-4100.3 9158.4-9158.4 9158.4-5058 0-9158.4-4100.3-9158.4-9158.4 0-5058 4100.3-9158.4 9158.4-9158.4 5058 0 9158.4 4100.3 9158.4 9158.4zm-907.21-0.01c0 4557-3694.2 8251.2-8251.2 8251.2s-8251.1-3694.2-8251.1-8251.2 3694.2-8251.2 8251.1-8251.2c4557 0 8251.2 3694.2 8251.2 8251.2z"/>
<path fill-rule="evenodd" d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z" transform="matrix(.95833 0 0 .95833 944.44 99.204)"/>
<rect transform="rotate(-45)" height="11583" width="5522.2" y="26814" x="-2375"/>
<?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="48"
width="48"
version="1.1"
id="svg2"
inkscape:version="0.48.2 r9819"
sodipodi:docname="icon_gerbview.svg">
<metadata
id="metadata172">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</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="1175"
inkscape:window-height="644"
id="namedview170"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="24"
inkscape:cy="24"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<defs
id="defs4">
<linearGradient
id="ab"
y2="4.2193"
gradientUnits="userSpaceOnUse"
x2="7.5955"
gradientTransform="matrix(.88924 0 0 .78227 .62292 7.6472)"
y1="43.994"
x1="40.752">
<stop
stop-color="#333"
offset="0"
id="stop7" />
<stop
stop-color="#474747"
offset="1"
id="stop9" />
</linearGradient>
<linearGradient
id="a"
y2="19500"
gradientUnits="userSpaceOnUse"
x2="15000"
y1="14100"
x1="10100">
<stop
stop-color="#f5fffa"
offset="0"
id="stop12" />
<stop
stop-color="#6f6d7f"
offset="1.2"
id="stop14" />
</linearGradient>
<linearGradient
id="b"
y2="19500"
gradientUnits="userSpaceOnUse"
x2="15000"
y1="14100"
x1="10100">
<stop
stop-color="#fff"
stop-opacity="0.698"
offset="0"
id="stop17" />
<stop
stop-color="#5db7ff"
stop-opacity="0.698"
offset="1.2"
id="stop19" />
</linearGradient>
<linearGradient
id="x"
y2="19500"
gradientUnits="userSpaceOnUse"
x2="15000"
y1="14100"
x1="10100">
<stop
stop-color="#f5ffff"
offset="0"
id="stop22" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1.2"
id="stop24" />
</linearGradient>
<radialGradient
id="ac"
xlink:href="#b"
gradientUnits="userSpaceOnUse"
cy="17526"
cx="18632"
gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)"
r="40170" />
<radialGradient
id="ad"
xlink:href="#b"
gradientUnits="userSpaceOnUse"
cy="17831"
cx="18969"
r="23166" />
<radialGradient
id="ae"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
cy="27370"
cx="25538"
gradientTransform="translate(-1.2031e-5,1.3252e-4)"
r="3682.2" />
<radialGradient
id="af"
xlink:href="#x"
gradientUnits="userSpaceOnUse"
cy="17398"
cx="18401"
gradientTransform="translate(-7.3214e-5,-4.3295e-5)"
r="11888" />
<radialGradient
id="ag"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
cy="15674"
cx="16467"
gradientTransform="matrix(.0019151 0 0 .0019411 33.623 -11.394)"
r="3055.2" />
<radialGradient
id="ah"
xlink:href="#b"
gradientUnits="userSpaceOnUse"
cy="17753"
cx="18300"
gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)"
r="28430" />
<radialGradient
id="ai"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
cy="33086"
cx="-2182.7"
gradientTransform="matrix(.0032733 0 0 .0011356 31.832 15.718)"
r="11540" />
<radialGradient
id="aj"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
cy="18596"
cx="17070"
gradientTransform="matrix(.0019519 0 0 .0019044 33.623 -11.394)"
r="3734.6" />
<linearGradient
id="ao"
y2="39368"
xlink:href="#x"
gradientUnits="userSpaceOnUse"
x2="2312.5"
gradientTransform="matrix(.0032733 0 0 .0011356 31.832 15.718)"
y1="39560"
x1="-1083.8" />
<radialGradient
id="ak"
xlink:href="#b"
gradientUnits="userSpaceOnUse"
cy="11246"
cx="13190"
gradientTransform="translate(-9.4474e-5,4.0964e-5)"
r="16248" />
<linearGradient
id="ap"
y2="18951"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
x2="12508"
gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)"
y1="-85.143"
x1="-1308.3" />
<radialGradient
id="al"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
cy="29167"
cx="26631"
gradientTransform="translate(-1.1897e-4,-1.2562e-4)"
r="4284.2" />
<linearGradient
id="y"
y2="20482"
gradientUnits="userSpaceOnUse"
x2="6753.4"
gradientTransform="matrix(.0013312 0 0 .0027924 31.832 15.718)"
y1="27356"
x1="850.32">
<stop
stop-color="#a66500"
offset="0"
id="stop39" />
<stop
stop-color="#da8f00"
offset="1"
id="stop41" />
</linearGradient>
<linearGradient
id="z"
y2="21261"
gradientUnits="userSpaceOnUse"
x2="3741.1"
gradientTransform="matrix(.00126 0 0 .0029504 31.832 15.718)"
y1="21261"
x1="-3478.9">
<stop
stop-color="#eda700"
offset="0"
id="stop44" />
<stop
stop-color="#fff"
offset=".38824"
id="stop46" />
<stop
stop-color="#ffcb50"
offset="0.7"
id="stop48" />
<stop
stop-color="#ed8700"
offset="1"
id="stop50" />
</linearGradient>
<linearGradient
id="aa"
y2="29618"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
x2="24590"
gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)"
y1="405.03"
x1="389.4" />
<radialGradient
id="am"
gradientUnits="userSpaceOnUse"
cy="10444"
cx="11715"
gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)"
r="15132">
<stop
stop-color="#f5ffff"
stop-opacity=".49020"
offset="0"
id="stop54" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1.2"
id="stop56" />
</radialGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#ab"
id="linearGradient3191"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.88924,0,0,0.78227,0.62292,7.6472)"
x1="40.752"
y1="43.994"
x2="7.5955"
y2="4.2193" />
<linearGradient
inkscape:collect="always"
xlink:href="#ab"
id="linearGradient3235"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.88924,0,0,0.78227,0.62292,7.6472)"
x1="40.752"
y1="43.994"
x2="7.5955"
y2="4.2193" />
</defs>
<g
transform="matrix(1.0331,0,0,1.042,-1.5828,-1.9714)"
id="g99">
<g
transform="matrix(0.88516,0.46528,-0.46528,0.88516,19.499858,-8.1306505)"
id="use101"
style="stroke-linecap:round;stroke-linejoin:round">
<rect
id="rect3151"
x="6.4949999"
y="10.5"
display="block"
width="31.011999"
height="32.011002"
ry="0.89886999"
style="color:#000000;fill:#ffffff;fill-opacity:0.63253;stroke:url(#linearGradient3191);display:block" />
<rect
id="rect3153"
x="7.5"
y="11.496"
width="28.997999"
height="30.004"
ry="0.11482"
rx="0.13187"
display="block"
style="opacity:0.79120998;color:#000000;fill:none;stroke:#ffffff;display:block" />
<path
id="path3155"
display="block"
d="m 10.184,13.468 5.316,0.032 3,3 v 8"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3157"
display="block"
d="m 22.5,24.5 v -8 l -3,-3"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3159"
display="block"
d="m 26.5,24.5 v -8 l -3,-3"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3161"
display="block"
d="m 30.5,24.5 v -11"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3163"
display="block"
d="m 18.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3165"
display="block"
d="m 22.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3167"
display="block"
d="m 26.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3169"
display="block"
d="m 30.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3171"
display="block"
d="m 30.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3173"
display="block"
d="m 26.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3175"
display="block"
d="m 22.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3177"
display="block"
d="m 18.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3179"
display="block"
d="m 18.5,33.5 v 3 l -2,2 h -6"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3181"
display="block"
d="m 22.5,33.5 v 5"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3183"
display="block"
d="m 26.5,33.5 v 3 l 2,2 h 6"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3185"
display="block"
d="m 30.5,33.5 2,2 h 2"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3187"
d="m 10.5,15.5 h 4 l 2,2 v 18 l -1,1 h -5 v -21 z"
display="block"
style="color:#000000;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<rect
id="rect3189"
x="16.5"
y="22.5"
width="16"
height="13"
ry="2.0280001"
display="block"
style="color:#000000;fill:none;stroke:#000000;display:block" />
</g>
<use
xlink:href="#an"
transform="matrix(.97367 .22797 -.22797 .97367 9.8015 -7.4372)"
height="48"
width="48"
y="0"
x="0"
id="use103" />
<g
transform="translate(-3.995,0.989271)"
id="an"
style="stroke-linecap:round;stroke-linejoin:round">
<rect
id="rect3195"
x="6.4949999"
y="10.5"
display="block"
width="31.011999"
height="32.011002"
ry="0.89886999"
style="color:#000000;fill:#ffffff;fill-opacity:0.63253;stroke:url(#linearGradient3235);display:block" />
<rect
id="rect3197"
x="7.5"
y="11.496"
width="28.997999"
height="30.004"
ry="0.11482"
rx="0.13187"
display="block"
style="opacity:0.79120998;color:#000000;fill:none;stroke:#ffffff;display:block" />
<path
id="path3199"
display="block"
d="m 10.184,13.468 5.316,0.032 3,3 v 8"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3201"
display="block"
d="m 22.5,24.5 v -8 l -3,-3"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3203"
display="block"
d="m 26.5,24.5 v -8 l -3,-3"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3205"
display="block"
d="m 30.5,24.5 v -11"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3207"
display="block"
d="m 18.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3209"
display="block"
d="m 22.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3211"
display="block"
d="m 26.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3213"
display="block"
d="m 30.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3215"
display="block"
d="m 30.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3217"
display="block"
d="m 26.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3219"
display="block"
d="m 22.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3221"
display="block"
d="m 18.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3223"
display="block"
d="m 18.5,33.5 v 3 l -2,2 h -6"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3225"
display="block"
d="m 22.5,33.5 v 5"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3227"
display="block"
d="m 26.5,33.5 v 3 l 2,2 h 6"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3229"
display="block"
d="m 30.5,33.5 2,2 h 2"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3231"
d="m 10.5,15.5 h 4 l 2,2 v 18 l -1,1 h -5 v -21 z"
display="block"
style="color:#000000;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<rect
id="rect3233"
x="16.5"
y="22.5"
width="16"
height="13"
ry="2.0280001"
display="block"
style="color:#000000;fill:none;stroke:#000000;display:block" />
</g>
<path
d="m4 26v-13h28v13c-7 6-18-6-28 0z"
fill-opacity=".51807"
fill-rule="evenodd"
fill="#fff"
id="path106" />
</g>
<g
transform="matrix(.69611 .19209 -.17663 .64009 -8.9202 1.1447)"
id="g114">
<g
opacity=".18470"
transform="matrix(.001928 0 0 .001928 33.342 -9.8361)"
id="g116">
<path
fill-rule="evenodd"
d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z"
transform="matrix(1.0366,0,0,1.0366,-8223.8,-8828.8)"
id="path118" />
<path
fill-rule="evenodd"
d="m19683 17385c-463.92-572.08-642.91-183.34-885.67-376.28-186.31-167 126.72-430.52-278.63-868.94l-1977.9 1967.3c337.99 333.5 523.59 91.68 730.6 375.12 155.23 225.6-17.11 519.24 482.71 842.41l1928.9-1939.6z"
id="path120" />
<rect
fill-rule="evenodd"
transform="rotate(-45)"
height="1619"
width="4666.7"
y="23097"
x="-2064"
id="rect122" />
<path
fill-rule="evenodd"
d="m19649 9700.3c0 5058-4100.3 9158.4-9158.4 9158.4-5058 0-9158.4-4100.3-9158.4-9158.4 0-5058 4100.3-9158.4 9158.4-9158.4 5058 0 9158.4 4100.3 9158.4 9158.4zm-907.21-0.01c0 4557-3694.2 8251.2-8251.2 8251.2s-8251.1-3694.2-8251.1-8251.2 3694.2-8251.2 8251.1-8251.2c4557 0 8251.2 3694.2 8251.2 8251.2z"
id="path124" />
<path
fill-rule="evenodd"
d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z"
transform="matrix(.95833 0 0 .95833 944.44 99.204)"
id="path126" />
<rect
transform="rotate(-45)"
height="11583"
width="5522.2"
y="26814"
x="-2375"
id="rect128" />
</g>
<path
opacity="0.293"
d="m68.252 9.6924c0 6.7349-5.4597 12.195-12.195 12.195-6.7348 0-12.194-5.4597-12.194-12.195 0-6.7348 5.4597-12.195 12.194-12.195 6.7349 0 12.195 5.4597 12.195 12.195zm1.8483-2.402c0 8.9894-7.2873 16.277-16.277 16.277-8.9894 0-16.277-7.2874-16.277-16.277 0-8.9894 7.2874-16.277 16.277-16.277 8.9894 0 16.277 7.2874 16.277 16.277z"
fill-rule="evenodd"
fill="url(#ac)"
id="path130" />
<path
opacity=".68790"
d="m19395 9325.5a9226.1 9226.1 0 1 1 -18452 0 9226.1 9226.1 0 1 1 18452 0z"
fill-rule="evenodd"
transform="matrix(.0017972 0 0 .0017972 36.035 -9.712)"
fill="url(#ad)"
id="path132" />
<path
d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z"
fill-rule="evenodd"
transform="matrix(.0019986 0 0 .0019986 17.768 -28.417)"
fill="#717386"
id="path134" />
<path
d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z"
fill-rule="evenodd"
transform="matrix(.0018239 0 0 .0018239 22.527 -23.608)"
fill="url(#ae)"
id="path136" />
<path
d="m19395 9325.5a9226.1 9226.1 0 1 1 -18452 0 9226.1 9226.1 0 1 1 18452 0z"
fill-rule="evenodd"
transform="matrix(.0017972 0 0 .0017972 35.852 -9.712)"
fill="url(#af)"
id="path138" />
<path
fill-rule="evenodd"
fill="url(#ag)"
d="m71.572 22.125c-0.89446-1.103-1.2396-0.35349-1.7076-0.72548-0.35921-0.32198 0.24432-0.83006-0.53721-1.6754l-3.8136 3.793c0.65166 0.643 1.0095 0.17676 1.4086 0.72325 0.29929 0.43497-0.03299 1.0011 0.93068 1.6242l3.7191-3.7396z"
id="path140" />
<path
fill-rule="evenodd"
fill="url(#ah)"
d="m69.601 7.6645c0 8.3692-6.7354 15.154-15.044 15.154-8.3085 0-15.044-6.7846-15.044-15.154 0-8.3692 6.7354-15.154 15.044-15.154 8.3085 0 15.044 6.7845 15.044 15.154zm1.2321-0.61426c0 9.3909-7.6128 17.004-17.004 17.004-9.3909 0-17.004-7.6128-17.004-17.004 0-9.3909 7.6128-17.004 17.004-17.004 9.3909 0 17.004 7.6128 17.004 17.004z"
id="path142" />
<rect
opacity=".9554"
fill-rule="evenodd"
transform="rotate(-45)"
height="3.1216"
width="8.9976"
y="60.251"
x="27.853"
fill="url(#ai)"
id="rect144" />
<path
fill-rule="evenodd"
fill="url(#aj)"
d="m71.343 22.447c-0.89446-1.103-1.2396-0.35349-1.7076-0.72548-0.35921-0.32198 0.19842-1.1055-0.81263-2.0885l-3.5381 3.4717c0.78938 0.78072 1.5604 0.26858 1.9595 0.81506 0.29929 0.43497-0.03299 1.0011 0.93068 1.6242l3.1682-3.0969z"
id="path146" />
<rect
fill-rule="evenodd"
transform="rotate(-45)"
height="2.5865"
width="7.4552"
y="60"
x="28.624"
fill="url(#ao)"
id="rect148" />
<path
opacity=".21020"
d="m13469 7844a3569.2 3569.2 0 1 1 -7138.4 0 3569.2 3569.2 0 1 1 7138.4 0z"
fill-rule="evenodd"
transform="matrix(.0016277 0 0 .0016277 32.568 -13.102)"
fill="url(#ak)"
id="path150" />
<path
fill-rule="evenodd"
fill="url(#ap)"
d="m71.507 7.3083c0 9.7521-7.9056 17.658-17.658 17.658-9.7521 0-17.658-7.9056-17.658-17.658 0-9.7521 7.9056-17.658 17.658-17.658 9.7521 0 17.658 7.9056 17.658 17.658zm-1.7491-0.000017c0 8.7861-7.1225 15.909-15.909 15.909-8.786 0-15.909-7.1225-15.909-15.909 0-8.7861 7.1225-15.909 15.909-15.909 8.7861 0 15.909 7.1225 15.909 15.909z"
id="path152" />
<path
d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z"
fill-rule="evenodd"
transform="matrix(.0018477 0 0 .0018477 35.444 -11.203)"
fill="#808080"
id="path154" />
<path
d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z"
fill-rule="evenodd"
transform="matrix(.0016773 0 0 .0016773 39.925 -6.5347)"
fill="url(#al)"
id="path156" />
<rect
transform="rotate(-45)"
height="22.333"
width="10.647"
y="67.417"
x="27.253"
fill="url(#y)"
id="rect158" />
<rect
transform="rotate(-45)"
height="19.934"
width="8.513"
y="68.617"
x="28.321"
fill="url(#z)"
id="rect160" />
<path
fill-rule="evenodd"
fill="url(#aa)"
d="m70.103 7.1705c0 8.9219-7.2327 16.155-16.155 16.155-8.9219 0-16.155-7.2327-16.155-16.155 0-8.9219 7.2327-16.155 16.155-16.155 8.9219 0 16.155 7.2327 16.155 16.155zm-0.48222 0.000006c0 8.6556-7.0168 15.672-15.672 15.672-8.6556 0-15.672-7.0168-15.672-15.672 0-8.6556 7.0168-15.672 15.672-15.672 8.6556 0 15.672 7.0168 15.672 15.672z"
id="path162" />
<path
opacity=".54140"
d="m56.503 2.2283c0 3.6148-2.9304 6.5452-6.5451 6.5452-3.6148 0-6.5451-2.9304-6.5451-6.5452s2.9304-6.5451 6.5451-6.5451c3.6148 0 6.5451 2.9304 6.5451 6.5451zm1.1483-0.68894c0 4.6295-3.7529 8.3824-8.3824 8.3824s-8.3824-3.7529-8.3824-8.3824 3.7529-8.3824 8.3824-8.3824 8.3824 3.7529 8.3824 8.3824z"
fill-rule="evenodd"
fill="url(#am)"
id="path164" />
<path
fill-rule="evenodd"
fill="#9a9ba9"
d="m67.861 25.319 0.29067 0.23655 3.2223-3.1012-0.17592-0.28246-3.337 3.1471z"
id="path166" />
<path
fill-rule="evenodd"
fill="#8a92a0"
d="m65.338 23.174 0.2678 0.19753 3.4914-3.4229-0.20844-0.32179-3.5507 3.5472z"
id="path168" />
</g>
<path opacity="0.293" d="m68.252 9.6924c0 6.7349-5.4597 12.195-12.195 12.195-6.7348 0-12.194-5.4597-12.194-12.195 0-6.7348 5.4597-12.195 12.194-12.195 6.7349 0 12.195 5.4597 12.195 12.195zm1.8483-2.402c0 8.9894-7.2873 16.277-16.277 16.277-8.9894 0-16.277-7.2874-16.277-16.277 0-8.9894 7.2874-16.277 16.277-16.277 8.9894 0 16.277 7.2874 16.277 16.277z" fill-rule="evenodd" fill="url(#ac)"/>
<path opacity=".68790" d="m19395 9325.5a9226.1 9226.1 0 1 1 -18452 0 9226.1 9226.1 0 1 1 18452 0z" fill-rule="evenodd" transform="matrix(.0017972 0 0 .0017972 36.035 -9.712)" fill="url(#ad)"/>
<path d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z" fill-rule="evenodd" transform="matrix(.0019986 0 0 .0019986 17.768 -28.417)" fill="#717386"/>
<path d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z" fill-rule="evenodd" transform="matrix(.0018239 0 0 .0018239 22.527 -23.608)" fill="url(#ae)"/>
<path d="m19395 9325.5a9226.1 9226.1 0 1 1 -18452 0 9226.1 9226.1 0 1 1 18452 0z" fill-rule="evenodd" transform="matrix(.0017972 0 0 .0017972 35.852 -9.712)" fill="url(#af)"/>
<path fill-rule="evenodd" fill="url(#ag)" d="m71.572 22.125c-0.89446-1.103-1.2396-0.35349-1.7076-0.72548-0.35921-0.32198 0.24432-0.83006-0.53721-1.6754l-3.8136 3.793c0.65166 0.643 1.0095 0.17676 1.4086 0.72325 0.29929 0.43497-0.03299 1.0011 0.93068 1.6242l3.7191-3.7396z"/>
<path fill-rule="evenodd" fill="url(#ah)" d="m69.601 7.6645c0 8.3692-6.7354 15.154-15.044 15.154-8.3085 0-15.044-6.7846-15.044-15.154 0-8.3692 6.7354-15.154 15.044-15.154 8.3085 0 15.044 6.7845 15.044 15.154zm1.2321-0.61426c0 9.3909-7.6128 17.004-17.004 17.004-9.3909 0-17.004-7.6128-17.004-17.004 0-9.3909 7.6128-17.004 17.004-17.004 9.3909 0 17.004 7.6128 17.004 17.004z"/>
<rect opacity=".9554" fill-rule="evenodd" transform="rotate(-45)" height="3.1216" width="8.9976" y="60.251" x="27.853" fill="url(#ai)"/>
<path fill-rule="evenodd" fill="url(#aj)" d="m71.343 22.447c-0.89446-1.103-1.2396-0.35349-1.7076-0.72548-0.35921-0.32198 0.19842-1.1055-0.81263-2.0885l-3.5381 3.4717c0.78938 0.78072 1.5604 0.26858 1.9595 0.81506 0.29929 0.43497-0.03299 1.0011 0.93068 1.6242l3.1682-3.0969z"/>
<rect fill-rule="evenodd" transform="rotate(-45)" height="2.5865" width="7.4552" y="60" x="28.624" fill="url(#ao)"/>
<path opacity=".21020" d="m13469 7844a3569.2 3569.2 0 1 1 -7138.4 0 3569.2 3569.2 0 1 1 7138.4 0z" fill-rule="evenodd" transform="matrix(.0016277 0 0 .0016277 32.568 -13.102)" fill="url(#ak)"/>
<path fill-rule="evenodd" fill="url(#ap)" d="m71.507 7.3083c0 9.7521-7.9056 17.658-17.658 17.658-9.7521 0-17.658-7.9056-17.658-17.658 0-9.7521 7.9056-17.658 17.658-17.658 9.7521 0 17.658 7.9056 17.658 17.658zm-1.7491-0.000017c0 8.7861-7.1225 15.909-15.909 15.909-8.786 0-15.909-7.1225-15.909-15.909 0-8.7861 7.1225-15.909 15.909-15.909 8.7861 0 15.909 7.1225 15.909 15.909z"/>
<path d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z" fill-rule="evenodd" transform="matrix(.0018477 0 0 .0018477 35.444 -11.203)" fill="#808080"/>
<path d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z" fill-rule="evenodd" transform="matrix(.0016773 0 0 .0016773 39.925 -6.5347)" fill="url(#al)"/>
<rect transform="rotate(-45)" height="22.333" width="10.647" y="67.417" x="27.253" fill="url(#y)"/>
<rect transform="rotate(-45)" height="19.934" width="8.513" y="68.617" x="28.321" fill="url(#z)"/>
<path fill-rule="evenodd" fill="url(#aa)" d="m70.103 7.1705c0 8.9219-7.2327 16.155-16.155 16.155-8.9219 0-16.155-7.2327-16.155-16.155 0-8.9219 7.2327-16.155 16.155-16.155 8.9219 0 16.155 7.2327 16.155 16.155zm-0.48222 0.000006c0 8.6556-7.0168 15.672-15.672 15.672-8.6556 0-15.672-7.0168-15.672-15.672 0-8.6556 7.0168-15.672 15.672-15.672 8.6556 0 15.672 7.0168 15.672 15.672z"/>
<path opacity=".54140" d="m56.503 2.2283c0 3.6148-2.9304 6.5452-6.5451 6.5452-3.6148 0-6.5451-2.9304-6.5451-6.5452s2.9304-6.5451 6.5451-6.5451c3.6148 0 6.5451 2.9304 6.5451 6.5451zm1.1483-0.68894c0 4.6295-3.7529 8.3824-8.3824 8.3824s-8.3824-3.7529-8.3824-8.3824 3.7529-8.3824 8.3824-8.3824 8.3824 3.7529 8.3824 8.3824z" fill-rule="evenodd" fill="url(#am)"/>
<path fill-rule="evenodd" fill="#9a9ba9" d="m67.861 25.319 0.29067 0.23655 3.2223-3.1012-0.17592-0.28246-3.337 3.1471z"/>
<path fill-rule="evenodd" fill="#8a92a0" d="m65.338 23.174 0.2678 0.19753 3.4914-3.4229-0.20844-0.32179-3.5507 3.5472z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,109 +1,761 @@
<svg xmlns="http://www.w3.org/2000/svg" height="48" width="48" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient id="ab" y2="4.2193" gradientUnits="userSpaceOnUse" x2="7.5955" gradientTransform="matrix(.88924 0 0 .78227 .62292 7.6472)" y1="43.994" x1="40.752">
<stop stop-color="#333" offset="0"/>
<stop stop-color="#474747" offset="1"/>
</linearGradient>
<linearGradient id="a" y2="19500" gradientUnits="userSpaceOnUse" x2="15000" y1="14100" x1="10100">
<stop stop-color="#f5fffa" offset="0"/>
<stop stop-color="#6f6d7f" offset="1.2"/>
</linearGradient>
<linearGradient id="b" y2="19500" gradientUnits="userSpaceOnUse" x2="15000" y1="14100" x1="10100">
<stop stop-color="#fff" stop-opacity="0.698" offset="0"/>
<stop stop-color="#5db7ff" stop-opacity="0.698" offset="1.2"/>
</linearGradient>
<linearGradient id="x" y2="19500" gradientUnits="userSpaceOnUse" x2="15000" y1="14100" x1="10100">
<stop stop-color="#f5ffff" offset="0"/>
<stop stop-color="#fff" stop-opacity="0" offset="1.2"/>
</linearGradient>
<radialGradient id="ac" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="17526" cx="18632" gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)" r="40170"/>
<radialGradient id="ad" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="17831" cx="18969" r="23166"/>
<radialGradient id="ae" xlink:href="#a" gradientUnits="userSpaceOnUse" cy="27370" cx="25538" gradientTransform="translate(-1.2031e-5,1.3252e-4)" r="3682.2"/>
<radialGradient id="af" xlink:href="#x" gradientUnits="userSpaceOnUse" cy="17398" cx="18401" gradientTransform="translate(-7.3214e-5,-4.3295e-5)" r="11888"/>
<radialGradient id="ag" xlink:href="#a" gradientUnits="userSpaceOnUse" cy="15674" cx="16467" gradientTransform="matrix(.0019151 0 0 .0019411 33.623 -11.394)" r="3055.2"/>
<radialGradient id="ah" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="17753" cx="18300" gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)" r="28430"/>
<radialGradient id="ai" xlink:href="#a" gradientUnits="userSpaceOnUse" cy="33086" cx="-2182.7" gradientTransform="matrix(.0032733 0 0 .0011356 31.832 15.718)" r="11540"/>
<radialGradient id="aj" xlink:href="#a" gradientUnits="userSpaceOnUse" cy="18596" cx="17070" gradientTransform="matrix(.0019519 0 0 .0019044 33.623 -11.394)" r="3734.6"/>
<linearGradient id="ao" y2="39368" xlink:href="#x" gradientUnits="userSpaceOnUse" x2="2312.5" gradientTransform="matrix(.0032733 0 0 .0011356 31.832 15.718)" y1="39560" x1="-1083.8"/>
<radialGradient id="ak" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="11246" cx="13190" gradientTransform="translate(-9.4474e-5,4.0964e-5)" r="16248"/>
<linearGradient id="ap" y2="18951" xlink:href="#a" gradientUnits="userSpaceOnUse" x2="12508" gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)" y1="-85.143" x1="-1308.3"/>
<radialGradient id="al" xlink:href="#a" gradientUnits="userSpaceOnUse" cy="29167" cx="26631" gradientTransform="translate(-1.1897e-4,-1.2562e-4)" r="4284.2"/>
<linearGradient id="y" y2="20482" gradientUnits="userSpaceOnUse" x2="6753.4" gradientTransform="matrix(.0013312 0 0 .0027924 31.832 15.718)" y1="27356" x1="850.32">
<stop stop-color="#a66500" offset="0"/>
<stop stop-color="#da8f00" offset="1"/>
</linearGradient>
<linearGradient id="z" y2="21261" gradientUnits="userSpaceOnUse" x2="3741.1" gradientTransform="matrix(.00126 0 0 .0029504 31.832 15.718)" y1="21261" x1="-3478.9">
<stop stop-color="#eda700" offset="0"/>
<stop stop-color="#fff" offset=".38824"/>
<stop stop-color="#ffcb50" offset="0.7"/>
<stop stop-color="#ed8700" offset="1"/>
</linearGradient>
<linearGradient id="aa" y2="29618" xlink:href="#a" gradientUnits="userSpaceOnUse" x2="24590" gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)" y1="405.03" x1="389.4"/>
<radialGradient id="am" gradientUnits="userSpaceOnUse" cy="10444" cx="11715" gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)" r="15132">
<stop stop-color="#f5ffff" stop-opacity=".49020" offset="0"/>
<stop stop-color="#fff" stop-opacity="0" offset="1.2"/>
</radialGradient>
</defs>
<g id="w" stroke-linejoin="round" stroke-linecap="round" transform="translate(-40.995 -.010729)">
<rect style="color:#000000" fill-opacity=".63253" ry=".89887" height="32.011" width="31.012" stroke="url(#ab)" display="block" y="10.5" x="6.495" fill="#fff"/>
<rect opacity=".79121" style="color:#000000" display="block" rx=".13187" ry=".11482" height="30.004" width="28.998" stroke="#fff" y="11.496" x="7.5" fill="none"/>
<path style="color:#000000" d="m10.184 13.468 5.316 0.032 3 3v8" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" d="m22.5 24.5v-8l-3-3" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" d="m26.5 24.5v-8l-3-3" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" d="m30.5 24.5v-11" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" d="m18.5 24.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m22.5 24.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m26.5 24.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m30.5 24.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m30.5 31.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m26.5 31.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m22.5 31.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m18.5 31.5v2" stroke="#000" stroke-width="2" display="block" fill="none"/>
<path style="color:#000000" d="m18.5 33.5v3l-2 2h-6" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" d="m22.5 33.5v5" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" d="m26.5 33.5v3l2 2h6" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" d="m30.5 33.5 2 2h2" stroke="#000" display="block" fill="none"/>
<path style="color:#000000" display="block" d="m10.5 15.5h4l2 2v18l-1 1h-5v-21z" stroke="#000"/>
<rect style="color:#000000" display="block" ry="2.028" height="13" width="16" stroke="#000" y="22.5" x="16.5" fill="none"/>
</g>
<g transform="matrix(1.0331,0,0,1.042,-1.5828,-1.9714)">
<use xlink:href="#w" transform="matrix(.88516 .46528 -.46528 .88516 55.782 10.953)" height="48" width="48" y="0" x="0"/>
<use xlink:href="#an" transform="matrix(.97367 .22797 -.22797 .97367 9.8015 -7.4372)" height="48" width="48" y="0" x="0"/>
<use id="an" xlink:href="#w" transform="translate(37,1)" height="48" width="48" y="0" x="0"/>
<path d="m4 26v-13h28v13c-7 6-18-6-28 0z" fill-opacity=".51807" fill-rule="evenodd" fill="#fff"/>
</g>
<g fill-rule="evenodd" transform="translate(-6,53)" stroke="#000">
<path style="color:#000000" d="m31 31a10 10 0 1 1 -20 0 10 10 0 1 1 20 0z" fill-opacity=".3012" transform="translate(-47,-29)" stroke-width="1.5" fill="#72a0cf"/>
<rect style="color:#000000" stroke-width="1.0006" transform="matrix(.3824 -.924 .90415 .42722 0 0)" ry="1.1087" width="3.1174" y="-13.376" x="-14.434" height="17.268" fill="#2e3436"/>
</g>
<g transform="matrix(.69611 .19209 -.17663 .64009 -8.9202 1.1447)">
<g opacity=".18470" transform="matrix(.001928 0 0 .001928 33.342 -9.8361)">
<path fill-rule="evenodd" d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z" transform="matrix(1.0366,0,0,1.0366,-8223.8,-8828.8)"/>
<path fill-rule="evenodd" d="m19683 17385c-463.92-572.08-642.91-183.34-885.67-376.28-186.31-167 126.72-430.52-278.63-868.94l-1977.9 1967.3c337.99 333.5 523.59 91.68 730.6 375.12 155.23 225.6-17.11 519.24 482.71 842.41l1928.9-1939.6z"/>
<rect fill-rule="evenodd" transform="rotate(-45)" height="1619" width="4666.7" y="23097" x="-2064"/>
<path fill-rule="evenodd" d="m19649 9700.3c0 5058-4100.3 9158.4-9158.4 9158.4-5058 0-9158.4-4100.3-9158.4-9158.4 0-5058 4100.3-9158.4 9158.4-9158.4 5058 0 9158.4 4100.3 9158.4 9158.4zm-907.21-0.01c0 4557-3694.2 8251.2-8251.2 8251.2s-8251.1-3694.2-8251.1-8251.2 3694.2-8251.2 8251.1-8251.2c4557 0 8251.2 3694.2 8251.2 8251.2z"/>
<path fill-rule="evenodd" d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z" transform="matrix(.95833 0 0 .95833 944.44 99.204)"/>
<rect transform="rotate(-45)" height="11583" width="5522.2" y="26814" x="-2375"/>
<?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="48"
width="48"
version="1.1"
id="svg2"
inkscape:version="0.48.2 r9819"
sodipodi:docname="icon_gerbview_small.svg">
<metadata
id="metadata172">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</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="1200"
inkscape:window-height="713"
id="namedview170"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="24"
inkscape:cy="24"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<defs
id="defs4">
<linearGradient
id="ab"
y2="4.2193"
gradientUnits="userSpaceOnUse"
x2="7.5955"
gradientTransform="matrix(.88924 0 0 .78227 .62292 7.6472)"
y1="43.994"
x1="40.752">
<stop
stop-color="#333"
offset="0"
id="stop7" />
<stop
stop-color="#474747"
offset="1"
id="stop9" />
</linearGradient>
<linearGradient
id="a"
y2="19500"
gradientUnits="userSpaceOnUse"
x2="15000"
y1="14100"
x1="10100">
<stop
stop-color="#f5fffa"
offset="0"
id="stop12" />
<stop
stop-color="#6f6d7f"
offset="1.2"
id="stop14" />
</linearGradient>
<linearGradient
id="b"
y2="19500"
gradientUnits="userSpaceOnUse"
x2="15000"
y1="14100"
x1="10100">
<stop
stop-color="#fff"
stop-opacity="0.698"
offset="0"
id="stop17" />
<stop
stop-color="#5db7ff"
stop-opacity="0.698"
offset="1.2"
id="stop19" />
</linearGradient>
<linearGradient
id="x"
y2="19500"
gradientUnits="userSpaceOnUse"
x2="15000"
y1="14100"
x1="10100">
<stop
stop-color="#f5ffff"
offset="0"
id="stop22" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1.2"
id="stop24" />
</linearGradient>
<radialGradient
id="ac"
xlink:href="#b"
gradientUnits="userSpaceOnUse"
cy="17526"
cx="18632"
gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)"
r="40170" />
<radialGradient
id="ad"
xlink:href="#b"
gradientUnits="userSpaceOnUse"
cy="17831"
cx="18969"
r="23166" />
<radialGradient
id="ae"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
cy="27370"
cx="25538"
gradientTransform="translate(-1.2031e-5,1.3252e-4)"
r="3682.2" />
<radialGradient
id="af"
xlink:href="#x"
gradientUnits="userSpaceOnUse"
cy="17398"
cx="18401"
gradientTransform="translate(-7.3214e-5,-4.3295e-5)"
r="11888" />
<radialGradient
id="ag"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
cy="15674"
cx="16467"
gradientTransform="matrix(.0019151 0 0 .0019411 33.623 -11.394)"
r="3055.2" />
<radialGradient
id="ah"
xlink:href="#b"
gradientUnits="userSpaceOnUse"
cy="17753"
cx="18300"
gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)"
r="28430" />
<radialGradient
id="ai"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
cy="33086"
cx="-2182.7"
gradientTransform="matrix(.0032733 0 0 .0011356 31.832 15.718)"
r="11540" />
<radialGradient
id="aj"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
cy="18596"
cx="17070"
gradientTransform="matrix(.0019519 0 0 .0019044 33.623 -11.394)"
r="3734.6" />
<linearGradient
id="ao"
y2="39368"
xlink:href="#x"
gradientUnits="userSpaceOnUse"
x2="2312.5"
gradientTransform="matrix(.0032733 0 0 .0011356 31.832 15.718)"
y1="39560"
x1="-1083.8" />
<radialGradient
id="ak"
xlink:href="#b"
gradientUnits="userSpaceOnUse"
cy="11246"
cx="13190"
gradientTransform="translate(-9.4474e-5,4.0964e-5)"
r="16248" />
<linearGradient
id="ap"
y2="18951"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
x2="12508"
gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)"
y1="-85.143"
x1="-1308.3" />
<radialGradient
id="al"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
cy="29167"
cx="26631"
gradientTransform="translate(-1.1897e-4,-1.2562e-4)"
r="4284.2" />
<linearGradient
id="y"
y2="20482"
gradientUnits="userSpaceOnUse"
x2="6753.4"
gradientTransform="matrix(.0013312 0 0 .0027924 31.832 15.718)"
y1="27356"
x1="850.32">
<stop
stop-color="#a66500"
offset="0"
id="stop39" />
<stop
stop-color="#da8f00"
offset="1"
id="stop41" />
</linearGradient>
<linearGradient
id="z"
y2="21261"
gradientUnits="userSpaceOnUse"
x2="3741.1"
gradientTransform="matrix(.00126 0 0 .0029504 31.832 15.718)"
y1="21261"
x1="-3478.9">
<stop
stop-color="#eda700"
offset="0"
id="stop44" />
<stop
stop-color="#fff"
offset=".38824"
id="stop46" />
<stop
stop-color="#ffcb50"
offset="0.7"
id="stop48" />
<stop
stop-color="#ed8700"
offset="1"
id="stop50" />
</linearGradient>
<linearGradient
id="aa"
y2="29618"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
x2="24590"
gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)"
y1="405.03"
x1="389.4" />
<radialGradient
id="am"
gradientUnits="userSpaceOnUse"
cy="10444"
cx="11715"
gradientTransform="matrix(.001928 0 0 .001928 33.623 -11.394)"
r="15132">
<stop
stop-color="#f5ffff"
stop-opacity=".49020"
offset="0"
id="stop54" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1.2"
id="stop56" />
</radialGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#ab"
id="linearGradient3191"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.88924,0,0,0.78227,0.62292,7.6472)"
x1="40.752"
y1="43.994"
x2="7.5955"
y2="4.2193" />
<linearGradient
inkscape:collect="always"
xlink:href="#ab"
id="linearGradient3235"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.88924,0,0,0.78227,0.62292,7.6472)"
x1="40.752"
y1="43.994"
x2="7.5955"
y2="4.2193" />
</defs>
<g
transform="matrix(1.0331,0,0,1.042,-1.5828,-1.9714)"
id="g99">
<g
transform="matrix(0.88516,0.46528,-0.46528,0.88516,19.499858,-8.1306505)"
id="use101"
style="stroke-linecap:round;stroke-linejoin:round">
<rect
id="rect3151"
x="6.4949999"
y="10.5"
display="block"
width="31.011999"
height="32.011002"
ry="0.89886999"
style="color:#000000;fill:#ffffff;fill-opacity:0.63253;stroke:url(#linearGradient3191);display:block" />
<rect
id="rect3153"
x="7.5"
y="11.496"
width="28.997999"
height="30.004"
ry="0.11482"
rx="0.13187"
display="block"
style="opacity:0.79120998;color:#000000;fill:none;stroke:#ffffff;display:block" />
<path
id="path3155"
display="block"
d="m 10.184,13.468 5.316,0.032 3,3 v 8"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3157"
display="block"
d="m 22.5,24.5 v -8 l -3,-3"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3159"
display="block"
d="m 26.5,24.5 v -8 l -3,-3"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3161"
display="block"
d="m 30.5,24.5 v -11"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3163"
display="block"
d="m 18.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3165"
display="block"
d="m 22.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3167"
display="block"
d="m 26.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3169"
display="block"
d="m 30.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3171"
display="block"
d="m 30.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3173"
display="block"
d="m 26.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3175"
display="block"
d="m 22.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3177"
display="block"
d="m 18.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3179"
display="block"
d="m 18.5,33.5 v 3 l -2,2 h -6"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3181"
display="block"
d="m 22.5,33.5 v 5"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3183"
display="block"
d="m 26.5,33.5 v 3 l 2,2 h 6"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3185"
display="block"
d="m 30.5,33.5 2,2 h 2"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3187"
d="m 10.5,15.5 h 4 l 2,2 v 18 l -1,1 h -5 v -21 z"
display="block"
style="color:#000000;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<rect
id="rect3189"
x="16.5"
y="22.5"
width="16"
height="13"
ry="2.0280001"
display="block"
style="color:#000000;fill:none;stroke:#000000;display:block" />
</g>
<use
xlink:href="#an"
transform="matrix(.97367 .22797 -.22797 .97367 9.8015 -7.4372)"
height="48"
width="48"
y="0"
x="0"
id="use103" />
<g
transform="translate(-3.995,0.989271)"
id="an"
style="stroke-linecap:round;stroke-linejoin:round">
<rect
id="rect3195"
x="6.4949999"
y="10.5"
display="block"
width="31.011999"
height="32.011002"
ry="0.89886999"
style="color:#000000;fill:#ffffff;fill-opacity:0.63253;stroke:url(#linearGradient3235);display:block" />
<rect
id="rect3197"
x="7.5"
y="11.496"
width="28.997999"
height="30.004"
ry="0.11482"
rx="0.13187"
display="block"
style="opacity:0.79120998;color:#000000;fill:none;stroke:#ffffff;display:block" />
<path
id="path3199"
display="block"
d="m 10.184,13.468 5.316,0.032 3,3 v 8"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3201"
display="block"
d="m 22.5,24.5 v -8 l -3,-3"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3203"
display="block"
d="m 26.5,24.5 v -8 l -3,-3"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3205"
display="block"
d="m 30.5,24.5 v -11"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3207"
display="block"
d="m 18.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3209"
display="block"
d="m 22.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3211"
display="block"
d="m 26.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3213"
display="block"
d="m 30.5,24.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3215"
display="block"
d="m 30.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3217"
display="block"
d="m 26.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3219"
display="block"
d="m 22.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3221"
display="block"
d="m 18.5,31.5 v 2"
style="color:#000000;fill:none;stroke:#000000;stroke-width:2;display:block"
inkscape:connector-curvature="0" />
<path
id="path3223"
display="block"
d="m 18.5,33.5 v 3 l -2,2 h -6"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3225"
display="block"
d="m 22.5,33.5 v 5"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3227"
display="block"
d="m 26.5,33.5 v 3 l 2,2 h 6"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3229"
display="block"
d="m 30.5,33.5 2,2 h 2"
style="color:#000000;fill:none;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<path
id="path3231"
d="m 10.5,15.5 h 4 l 2,2 v 18 l -1,1 h -5 v -21 z"
display="block"
style="color:#000000;stroke:#000000;display:block"
inkscape:connector-curvature="0" />
<rect
id="rect3233"
x="16.5"
y="22.5"
width="16"
height="13"
ry="2.0280001"
display="block"
style="color:#000000;fill:none;stroke:#000000;display:block" />
</g>
<path
d="m4 26v-13h28v13c-7 6-18-6-28 0z"
fill-opacity=".51807"
fill-rule="evenodd"
fill="#fff"
id="path106" />
</g>
<g
transform="matrix(.69611 .19209 -.17663 .64009 -8.9202 1.1447)"
id="g114">
<g
opacity=".18470"
transform="matrix(.001928 0 0 .001928 33.342 -9.8361)"
id="g116">
<path
fill-rule="evenodd"
d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z"
transform="matrix(1.0366,0,0,1.0366,-8223.8,-8828.8)"
id="path118" />
<path
fill-rule="evenodd"
d="m19683 17385c-463.92-572.08-642.91-183.34-885.67-376.28-186.31-167 126.72-430.52-278.63-868.94l-1977.9 1967.3c337.99 333.5 523.59 91.68 730.6 375.12 155.23 225.6-17.11 519.24 482.71 842.41l1928.9-1939.6z"
id="path120" />
<rect
fill-rule="evenodd"
transform="rotate(-45)"
height="1619"
width="4666.7"
y="23097"
x="-2064"
id="rect122" />
<path
fill-rule="evenodd"
d="m19649 9700.3c0 5058-4100.3 9158.4-9158.4 9158.4-5058 0-9158.4-4100.3-9158.4-9158.4 0-5058 4100.3-9158.4 9158.4-9158.4 5058 0 9158.4 4100.3 9158.4 9158.4zm-907.21-0.01c0 4557-3694.2 8251.2-8251.2 8251.2s-8251.1-3694.2-8251.1-8251.2 3694.2-8251.2 8251.1-8251.2c4557 0 8251.2 3694.2 8251.2 8251.2z"
id="path124" />
<path
fill-rule="evenodd"
d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z"
transform="matrix(.95833 0 0 .95833 944.44 99.204)"
id="path126" />
<rect
transform="rotate(-45)"
height="11583"
width="5522.2"
y="26814"
x="-2375"
id="rect128" />
</g>
<path
opacity="0.293"
d="m68.252 9.6924c0 6.7349-5.4597 12.195-12.195 12.195-6.7348 0-12.194-5.4597-12.194-12.195 0-6.7348 5.4597-12.195 12.194-12.195 6.7349 0 12.195 5.4597 12.195 12.195zm1.8483-2.402c0 8.9894-7.2873 16.277-16.277 16.277-8.9894 0-16.277-7.2874-16.277-16.277 0-8.9894 7.2874-16.277 16.277-16.277 8.9894 0 16.277 7.2874 16.277 16.277z"
fill-rule="evenodd"
fill="url(#ac)"
id="path130" />
<path
opacity=".68790"
d="m19395 9325.5a9226.1 9226.1 0 1 1 -18452 0 9226.1 9226.1 0 1 1 18452 0z"
fill-rule="evenodd"
transform="matrix(.0017972 0 0 .0017972 36.035 -9.712)"
fill="url(#ad)"
id="path132" />
<path
d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z"
fill-rule="evenodd"
transform="matrix(.0019986 0 0 .0019986 17.768 -28.417)"
fill="#717386"
id="path134" />
<path
d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z"
fill-rule="evenodd"
transform="matrix(.0018239 0 0 .0018239 22.527 -23.608)"
fill="url(#ae)"
id="path136" />
<path
d="m19395 9325.5a9226.1 9226.1 0 1 1 -18452 0 9226.1 9226.1 0 1 1 18452 0z"
fill-rule="evenodd"
transform="matrix(.0017972 0 0 .0017972 35.852 -9.712)"
fill="url(#af)"
id="path138" />
<path
fill-rule="evenodd"
fill="url(#ag)"
d="m71.572 22.125c-0.89446-1.103-1.2396-0.35349-1.7076-0.72548-0.35921-0.32198 0.24432-0.83006-0.53721-1.6754l-3.8136 3.793c0.65166 0.643 1.0095 0.17676 1.4086 0.72325 0.29929 0.43497-0.03299 1.0011 0.93068 1.6242l3.7191-3.7396z"
id="path140" />
<path
fill-rule="evenodd"
fill="url(#ah)"
d="m69.601 7.6645c0 8.3692-6.7354 15.154-15.044 15.154-8.3085 0-15.044-6.7846-15.044-15.154 0-8.3692 6.7354-15.154 15.044-15.154 8.3085 0 15.044 6.7845 15.044 15.154zm1.2321-0.61426c0 9.3909-7.6128 17.004-17.004 17.004-9.3909 0-17.004-7.6128-17.004-17.004 0-9.3909 7.6128-17.004 17.004-17.004 9.3909 0 17.004 7.6128 17.004 17.004z"
id="path142" />
<rect
opacity=".9554"
fill-rule="evenodd"
transform="rotate(-45)"
height="3.1216"
width="8.9976"
y="60.251"
x="27.853"
fill="url(#ai)"
id="rect144" />
<path
fill-rule="evenodd"
fill="url(#aj)"
d="m71.343 22.447c-0.89446-1.103-1.2396-0.35349-1.7076-0.72548-0.35921-0.32198 0.19842-1.1055-0.81263-2.0885l-3.5381 3.4717c0.78938 0.78072 1.5604 0.26858 1.9595 0.81506 0.29929 0.43497-0.03299 1.0011 0.93068 1.6242l3.1682-3.0969z"
id="path146" />
<rect
fill-rule="evenodd"
transform="rotate(-45)"
height="2.5865"
width="7.4552"
y="60"
x="28.624"
fill="url(#ao)"
id="rect148" />
<path
opacity=".21020"
d="m13469 7844a3569.2 3569.2 0 1 1 -7138.4 0 3569.2 3569.2 0 1 1 7138.4 0z"
fill-rule="evenodd"
transform="matrix(.0016277 0 0 .0016277 32.568 -13.102)"
fill="url(#ak)"
id="path150" />
<path
fill-rule="evenodd"
fill="url(#ap)"
d="m71.507 7.3083c0 9.7521-7.9056 17.658-17.658 17.658-9.7521 0-17.658-7.9056-17.658-17.658 0-9.7521 7.9056-17.658 17.658-17.658 9.7521 0 17.658 7.9056 17.658 17.658zm-1.7491-0.000017c0 8.7861-7.1225 15.909-15.909 15.909-8.786 0-15.909-7.1225-15.909-15.909 0-8.7861 7.1225-15.909 15.909-15.909 8.7861 0 15.909 7.1225 15.909 15.909z"
id="path152" />
<path
d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z"
fill-rule="evenodd"
transform="matrix(.0018477 0 0 .0018477 35.444 -11.203)"
fill="#808080"
id="path154" />
<path
d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z"
fill-rule="evenodd"
transform="matrix(.0016773 0 0 .0016773 39.925 -6.5347)"
fill="url(#al)"
id="path156" />
<rect
transform="rotate(-45)"
height="22.333"
width="10.647"
y="67.417"
x="27.253"
fill="url(#y)"
id="rect158" />
<rect
transform="rotate(-45)"
height="19.934"
width="8.513"
y="68.617"
x="28.321"
fill="url(#z)"
id="rect160" />
<path
fill-rule="evenodd"
fill="url(#aa)"
d="m70.103 7.1705c0 8.9219-7.2327 16.155-16.155 16.155-8.9219 0-16.155-7.2327-16.155-16.155 0-8.9219 7.2327-16.155 16.155-16.155 8.9219 0 16.155 7.2327 16.155 16.155zm-0.48222 0.000006c0 8.6556-7.0168 15.672-15.672 15.672-8.6556 0-15.672-7.0168-15.672-15.672 0-8.6556 7.0168-15.672 15.672-15.672 8.6556 0 15.672 7.0168 15.672 15.672z"
id="path162" />
<path
opacity=".54140"
d="m56.503 2.2283c0 3.6148-2.9304 6.5452-6.5451 6.5452-3.6148 0-6.5451-2.9304-6.5451-6.5452s2.9304-6.5451 6.5451-6.5451c3.6148 0 6.5451 2.9304 6.5451 6.5451zm1.1483-0.68894c0 4.6295-3.7529 8.3824-8.3824 8.3824s-8.3824-3.7529-8.3824-8.3824 3.7529-8.3824 8.3824-8.3824 8.3824 3.7529 8.3824 8.3824z"
fill-rule="evenodd"
fill="url(#am)"
id="path164" />
<path
fill-rule="evenodd"
fill="#9a9ba9"
d="m67.861 25.319 0.29067 0.23655 3.2223-3.1012-0.17592-0.28246-3.337 3.1471z"
id="path166" />
<path
fill-rule="evenodd"
fill="#8a92a0"
d="m65.338 23.174 0.2678 0.19753 3.4914-3.4229-0.20844-0.32179-3.5507 3.5472z"
id="path168" />
</g>
<path opacity="0.293" d="m68.252 9.6924c0 6.7349-5.4597 12.195-12.195 12.195-6.7348 0-12.194-5.4597-12.194-12.195 0-6.7348 5.4597-12.195 12.194-12.195 6.7349 0 12.195 5.4597 12.195 12.195zm1.8483-2.402c0 8.9894-7.2873 16.277-16.277 16.277-8.9894 0-16.277-7.2874-16.277-16.277 0-8.9894 7.2874-16.277 16.277-16.277 8.9894 0 16.277 7.2874 16.277 16.277z" fill-rule="evenodd" fill="url(#ac)"/>
<path opacity=".68790" d="m19395 9325.5a9226.1 9226.1 0 1 1 -18452 0 9226.1 9226.1 0 1 1 18452 0z" fill-rule="evenodd" transform="matrix(.0017972 0 0 .0017972 36.035 -9.712)" fill="url(#ad)"/>
<path d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z" fill-rule="evenodd" transform="matrix(.0019986 0 0 .0019986 17.768 -28.417)" fill="#717386"/>
<path d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z" fill-rule="evenodd" transform="matrix(.0018239 0 0 .0018239 22.527 -23.608)" fill="url(#ae)"/>
<path d="m19395 9325.5a9226.1 9226.1 0 1 1 -18452 0 9226.1 9226.1 0 1 1 18452 0z" fill-rule="evenodd" transform="matrix(.0017972 0 0 .0017972 35.852 -9.712)" fill="url(#af)"/>
<path fill-rule="evenodd" fill="url(#ag)" d="m71.572 22.125c-0.89446-1.103-1.2396-0.35349-1.7076-0.72548-0.35921-0.32198 0.24432-0.83006-0.53721-1.6754l-3.8136 3.793c0.65166 0.643 1.0095 0.17676 1.4086 0.72325 0.29929 0.43497-0.03299 1.0011 0.93068 1.6242l3.7191-3.7396z"/>
<path fill-rule="evenodd" fill="url(#ah)" d="m69.601 7.6645c0 8.3692-6.7354 15.154-15.044 15.154-8.3085 0-15.044-6.7846-15.044-15.154 0-8.3692 6.7354-15.154 15.044-15.154 8.3085 0 15.044 6.7845 15.044 15.154zm1.2321-0.61426c0 9.3909-7.6128 17.004-17.004 17.004-9.3909 0-17.004-7.6128-17.004-17.004 0-9.3909 7.6128-17.004 17.004-17.004 9.3909 0 17.004 7.6128 17.004 17.004z"/>
<rect opacity=".9554" fill-rule="evenodd" transform="rotate(-45)" height="3.1216" width="8.9976" y="60.251" x="27.853" fill="url(#ai)"/>
<path fill-rule="evenodd" fill="url(#aj)" d="m71.343 22.447c-0.89446-1.103-1.2396-0.35349-1.7076-0.72548-0.35921-0.32198 0.19842-1.1055-0.81263-2.0885l-3.5381 3.4717c0.78938 0.78072 1.5604 0.26858 1.9595 0.81506 0.29929 0.43497-0.03299 1.0011 0.93068 1.6242l3.1682-3.0969z"/>
<rect fill-rule="evenodd" transform="rotate(-45)" height="2.5865" width="7.4552" y="60" x="28.624" fill="url(#ao)"/>
<path opacity=".21020" d="m13469 7844a3569.2 3569.2 0 1 1 -7138.4 0 3569.2 3569.2 0 1 1 7138.4 0z" fill-rule="evenodd" transform="matrix(.0016277 0 0 .0016277 32.568 -13.102)" fill="url(#ak)"/>
<path fill-rule="evenodd" fill="url(#ap)" d="m71.507 7.3083c0 9.7521-7.9056 17.658-17.658 17.658-9.7521 0-17.658-7.9056-17.658-17.658 0-9.7521 7.9056-17.658 17.658-17.658 9.7521 0 17.658 7.9056 17.658 17.658zm-1.7491-0.000017c0 8.7861-7.1225 15.909-15.909 15.909-8.786 0-15.909-7.1225-15.909-15.909 0-8.7861 7.1225-15.909 15.909-15.909 8.7861 0 15.909 7.1225 15.909 15.909z"/>
<path d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z" fill-rule="evenodd" transform="matrix(.0018477 0 0 .0018477 35.444 -11.203)" fill="#808080"/>
<path d="m29524 27524a2285.7 2285.7 0 1 1 -4571.4 0 2285.7 2285.7 0 1 1 4571.4 0z" fill-rule="evenodd" transform="matrix(.0016773 0 0 .0016773 39.925 -6.5347)" fill="url(#al)"/>
<rect transform="rotate(-45)" height="22.333" width="10.647" y="67.417" x="27.253" fill="url(#y)"/>
<rect transform="rotate(-45)" height="19.934" width="8.513" y="68.617" x="28.321" fill="url(#z)"/>
<path fill-rule="evenodd" fill="url(#aa)" d="m70.103 7.1705c0 8.9219-7.2327 16.155-16.155 16.155-8.9219 0-16.155-7.2327-16.155-16.155 0-8.9219 7.2327-16.155 16.155-16.155 8.9219 0 16.155 7.2327 16.155 16.155zm-0.48222 0.000006c0 8.6556-7.0168 15.672-15.672 15.672-8.6556 0-15.672-7.0168-15.672-15.672 0-8.6556 7.0168-15.672 15.672-15.672 8.6556 0 15.672 7.0168 15.672 15.672z"/>
<path opacity=".54140" d="m56.503 2.2283c0 3.6148-2.9304 6.5452-6.5451 6.5452-3.6148 0-6.5451-2.9304-6.5451-6.5452s2.9304-6.5451 6.5451-6.5451c3.6148 0 6.5451 2.9304 6.5451 6.5451zm1.1483-0.68894c0 4.6295-3.7529 8.3824-8.3824 8.3824s-8.3824-3.7529-8.3824-8.3824 3.7529-8.3824 8.3824-8.3824 8.3824 3.7529 8.3824 8.3824z" fill-rule="evenodd" fill="url(#am)"/>
<path fill-rule="evenodd" fill="#9a9ba9" d="m67.861 25.319 0.29067 0.23655 3.2223-3.1012-0.17592-0.28246-3.337 3.1471z"/>
<path fill-rule="evenodd" fill="#8a92a0" d="m65.338 23.174 0.2678 0.19753 3.4914-3.4229-0.20844-0.32179-3.5507 3.5472z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -8,11 +8,11 @@
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"
height="48"
width="48"
version="1.1"
id="svg2"
inkscape:version="0.48.1 r9760"
inkscape:version="0.48.2 r9819"
sodipodi:docname="icon_kicad.svg"
inkscape:export-filename="F:\kicad-launchpad\testing\bitmaps_png\sources\icon_kicad.png"
inkscape:export-xdpi="60"
@ -25,7 +25,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -38,15 +38,15 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1600"
inkscape:window-height="876"
inkscape:window-width="1280"
inkscape:window-height="977"
id="namedview579"
showgrid="true"
inkscape:zoom="22.774716"
inkscape:cx="23.593222"
inkscape:cy="12.172521"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:zoom="15.729167"
inkscape:cx="13.637086"
inkscape:cy="24"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-grids="false"
@ -155,36 +155,85 @@
id="linearGradient8673"
xlink:href="#linearGradient15606-1"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient10125-12"
id="linearGradient3045"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.00011,0,-0.10551)"
x1="110.96875"
y1="976.29968"
x2="110.99982"
y2="991.87488" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient10125-12"
id="linearGradient3047"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.00399,0,0,1.00959,-1.1658,-9.36636)"
x1="110.96875"
y1="976.29968"
x2="110.96875"
y2="992.375" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient10292-9-2-6-6"
id="linearGradient3049"
gradientUnits="userSpaceOnUse"
x1="110.96875"
y1="976.29968"
x2="110.96875"
y2="992.375" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient10286-3"
id="linearGradient3051"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.99213,0,0,3.00466,-933.712,-1623.08)"
x1="294.3429"
y1="256.58133"
x2="294.41818"
y2="243.13852" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient15606-1"
id="linearGradient3053"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.5,0,0,1.5,-368,281.32)"
x1="209.0625"
y1="-765.46082"
x2="209.0625"
y2="-781.62268" />
</defs>
<g
style="display:inline"
id="g10552"
transform="matrix(0.59915384,0,0,0.51444411,36.445696,461.74209)">
transform="matrix(1.1951831,0,0,0.99788751,70.658084,893.71693)">
<g
transform="matrix(2.9999,0,0,2.99884,-391.989,-3823.61)"
id="g10554"
style="fill:url(#linearGradient10600-2);fill-opacity:1;display:inline">
style="fill:url(#linearGradient3049);fill-opacity:1;display:inline">
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccc"
id="path10556"
d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 11.33333,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -6.06291,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10596-0);fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient3045);fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc"
id="path10558"
d="m 120.66272,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10598-1);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient3047);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
</g>
<path
sodipodi:nodetypes="cccccccccccccccc"
id="path10560"
d="m -55.9999,-892.61507 0,0.75 0,40.50004 0,0.72723 0.74999,0 32.49943,0 0.74998,0 0,-0.72723 0,-25.50003 0,-0.3282 -0.23436,-0.2343 -14.90598,-15.00001 -0.18748,-0.1875 -0.32813,0 -17.59346,0 -0.74999,0 z"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10602-2);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient3051);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
inkscape:connector-curvature="0" />
<path
style="fill:url(#linearGradient8673);fill-opacity:1;stroke:none;display:inline"
style="fill:url(#linearGradient3053);fill-opacity:1;stroke:none;display:inline"
d="m -54,-890.6378 16,0 14,14 0,24 -30,0 0,-38 z"
id="path10562"
inkscape:connector-curvature="0"
@ -193,84 +242,88 @@
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
</g>
<g
id="g3097"
transform="matrix(1.3110676,0,0,1.4950823,-12.487894,-19.157197)">
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#a33e03;stroke-width:1.14215171px;stroke-opacity:1"
d="m 28.476644,40.959114 0,-7.225004 13.547219,0"
id="path303-2" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#a33e03;stroke-width:1.4473021px;stroke-opacity:1"
d="m 30.271516,35.884055 3.560877,0"
id="path305-2" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#a33e03;stroke-width:1.47046161px;stroke-opacity:1"
d="m 36.056584,35.969225 5.590307,0"
id="path307-0" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#a33e03;stroke-width:1.69749784px;stroke-opacity:1"
d="m 29.76794,39.711656 4.218376,0"
id="path309-5" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#a33e03;stroke-width:1.99703228px;stroke-opacity:1"
d="m 38.035221,39.754241 3.728056,0"
id="path311-5" />
</g>
<path
id="path303-2"
d="m 15.299838,22.117153 0,-3.724729 6.791318,0"
style="fill:none;stroke:#a33e03;stroke-width:0.58063614px;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path305-2"
d="m 16.19962,19.500792 1.785093,0"
style="fill:none;stroke:#a33e03;stroke-width:0.73576558px;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path307-0"
d="m 19.099716,19.5447 2.802461,0"
style="fill:none;stroke:#a33e03;stroke-width:0.74753916px;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path309-5"
d="m 15.947174,21.474047 2.114702,0"
style="fill:none;stroke:#a33e03;stroke-width:0.86295766px;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path311-5"
d="m 20.091621,21.496001 1.868901,0"
style="fill:none;stroke:#a33e03;stroke-width:1.01523209px;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:0.9867416;stroke-linecap:square;stroke-opacity:1"
d="m 8.5368289,14.555249 0,3.93792"
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:1.94098949;stroke-linecap:square;stroke-opacity:1"
d="m 14.985895,26.290991 0,7.638538"
id="path315-9"
inkscape:connector-curvature="0" />
<path
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:0.94667083;stroke-linecap:round;stroke-opacity:1"
d="m 10.555193,14.642423 -1.9744558,1.81556"
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:1.86216748;stroke-linecap:round;stroke-opacity:1"
d="m 19.012097,26.460086 -3.938614,3.521713"
id="path317-0"
inkscape:connector-curvature="0" />
<path
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:0.94667083;stroke-linecap:round;stroke-opacity:1"
d="M 10.555193,18.62481 8.5807372,16.80925"
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:1.86216748;stroke-linecap:round;stroke-opacity:1"
d="M 19.012097,34.184879 15.073483,30.663165"
id="path319-2"
inkscape:connector-curvature="0" />
<path
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:0.94667083;stroke-linecap:square;stroke-opacity:1"
d="m 8.5954516,16.501892 -3.7958892,0"
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:1.86216748;stroke-linecap:square;stroke-opacity:1"
d="m 15.102835,30.066971 -7.5719831,0"
id="path321-8"
inkscape:connector-curvature="0" />
<path
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:0.88937062;stroke-linecap:round;stroke-opacity:1"
d="m 10.555193,18.98439 0,2.135555"
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:1.74945402;stroke-linecap:round;stroke-opacity:1"
d="m 19.012097,34.88237 0,4.14242"
id="path323-3"
inkscape:connector-curvature="0" />
<path
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:0.94667083;stroke-linecap:square;stroke-opacity:1"
d="m 11.586328,21.454457 -1.9527374,0"
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:1.86216748;stroke-linecap:square;stroke-opacity:1"
d="m 21.06899,39.673656 -3.895291,0"
id="path325-8"
inkscape:connector-curvature="0" />
<path
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:0.90969408;stroke-linecap:round;stroke-opacity:1"
d="m 10.496239,14.485005 0,-2.89048"
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:1.78943157;stroke-linecap:round;stroke-opacity:1"
d="m 18.894497,26.154736 0,-5.606778"
id="path327-0"
inkscape:connector-curvature="0" />
<path
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:0.95496774;stroke-linecap:square;stroke-opacity:1"
d="m 11.530374,11.420821 -1.9661595,0 0,-3.7106413 1.9661595,0 0,3.7106413"
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:1.87848806;stroke-linecap:square;stroke-opacity:1"
d="m 20.957374,20.211017 -3.922066,0 0,-7.197676 3.922066,0 0,7.197676"
id="path329-4"
inkscape:connector-curvature="0" />
<path
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:0.95042706;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 10.965511,13.559011 4.47239,0"
style="color:#000000;fill:none;stroke:#a33e03;stroke-width:1.86955619;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 19.830594,24.358549 8.921456,0"
id="path331-0"
inkscape:connector-curvature="0" />
<path
style="color:#000000;fill:#a33e03;fill-opacity:1;stroke:#a33e03;stroke-width:0.94674802;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 10.539398,4.0749115 0,3.5088427"
style="color:#000000;fill:#a33e03;fill-opacity:1;stroke:#a33e03;stroke-width:1.86231935;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 18.98059,5.9618662 0,6.8062408"
id="path333-9"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#a33e03;stroke-width:1.00222099px;stroke-opacity:1"
d="m 16.356524,12.501212 4.102533,-0.02269 1.085413,0.990712 -1.075141,0.937806 -4.112805,-0.03024 0,-1.875614 z"
style="fill:none;stroke:#a33e03;stroke-width:1.97143853px;stroke-opacity:1"
d="m 30.584506,22.306694 8.183671,-0.04401 2.165165,1.921723 -2.144675,1.819099 -8.204161,-0.05866 0,-3.638202 z"
id="path361-0"
inkscape:connector-curvature="0" />
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,833 @@
<?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="48"
width="48"
version="1.0"
id="svg2"
inkscape:version="0.48.2 r9819"
sodipodi:docname="icon_pagelayout_editor.svg">
<metadata
id="metadata133">
<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="1280"
inkscape:window-height="977"
id="namedview131"
showgrid="true"
inkscape:snap-to-guides="false"
inkscape:snap-grids="false"
inkscape:zoom="13.333333"
inkscape:cx="7.6914467"
inkscape:cy="24.519273"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
inkscape:current-layer="svg2">
<inkscape:grid
type="xygrid"
id="grid3110"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<defs
id="defs4">
<filter
id="n"
color-interpolation-filters="sRGB">
<feGaussianBlur
stdDeviation="1.0394514"
id="feGaussianBlur7" />
</filter>
<marker
id="l"
refY="0"
refX="0"
overflow="visible"
orient="auto"
style="overflow:visible">
<path
d="M 5.77,0 -2.88,5 V -5 l 8.65,5 z"
transform="scale(-0.4,-0.4)"
id="path10"
inkscape:connector-curvature="0"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" />
</marker>
<marker
id="m"
refY="0"
refX="0"
overflow="visible"
orient="auto"
style="overflow:visible">
<path
d="M 5.77,0 -2.88,5 V -5 l 8.65,5 z"
transform="scale(0.4,0.4)"
id="path13"
inkscape:connector-curvature="0"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" />
</marker>
<linearGradient
id="o"
y2="94.537003"
gradientUnits="userSpaceOnUse"
x2="86.536003"
y1="102.34"
x1="94.344002">
<stop
stop-color="#fff"
offset="0"
id="stop16" />
<stop
stop-color="#555753"
offset="1"
id="stop18" />
</linearGradient>
<linearGradient
id="p"
y2="94.586998"
gradientUnits="userSpaceOnUse"
x2="86.586998"
y1="103"
x1="95">
<stop
stop-color="#fff"
offset="0"
id="stop21" />
<stop
stop-color="#555753"
offset="1"
id="stop23" />
</linearGradient>
<linearGradient
id="q"
y2="95.292999"
gradientUnits="userSpaceOnUse"
x2="87.292999"
y1="103"
x1="95">
<stop
stop-color="#fff"
offset="0"
id="stop26" />
<stop
stop-color="#393b38"
offset="1"
id="stop28" />
</linearGradient>
<linearGradient
id="r"
y2="96"
gradientUnits="userSpaceOnUse"
x2="88"
y1="104"
x1="96">
<stop
stop-color="#888a85"
offset="0"
id="stop31" />
<stop
stop-color="#8c8e89"
offset=".0072"
id="stop33" />
<stop
stop-color="#abaca9"
offset=".0673"
id="stop35" />
<stop
stop-color="#c5c6c4"
offset=".1347"
id="stop37" />
<stop
stop-color="#dbdbda"
offset=".2115"
id="stop39" />
<stop
stop-color="#ebebeb"
offset=".3012"
id="stop41" />
<stop
stop-color="#f7f7f6"
offset=".4122"
id="stop43" />
<stop
stop-color="#fdfdfd"
offset=".5679"
id="stop45" />
<stop
stop-color="#fff"
offset="1"
id="stop47" />
</linearGradient>
<radialGradient
id="t"
gradientUnits="userSpaceOnUse"
cy="112.3"
cx="102"
gradientTransform="matrix(0,-0.25288808,0.20993589,0,-0.32737717,51.222083)"
r="139.56">
<stop
stop-color="#535557"
offset="0"
id="stop50" />
<stop
stop-color="#898a8c"
offset=".11366"
id="stop52" />
<stop
stop-color="#ececec"
offset=".20297"
id="stop54" />
<stop
stop-color="#fafafa"
offset=".23630"
id="stop56" />
<stop
stop-color="#fff"
offset=".27220"
id="stop58" />
<stop
stop-color="#fafafa"
offset=".53130"
id="stop60" />
<stop
stop-color="#ebecec"
offset=".84490"
id="stop62" />
<stop
stop-color="#e1e2e3"
offset="1"
id="stop64" />
</radialGradient>
<radialGradient
id="u"
gradientUnits="userSpaceOnUse"
cy="112.3"
cx="102"
gradientTransform="matrix(0,-0.22456181,0.20619923,0,-0.06831569,48.261372)"
r="139.56">
<stop
stop-color="#00537d"
offset="0"
id="stop67" />
<stop
stop-color="#186389"
offset=".0151"
id="stop69" />
<stop
stop-color="#558ca8"
offset=".0558"
id="stop71" />
<stop
stop-color="#89afc3"
offset=".0964"
id="stop73" />
<stop
stop-color="#b3ccd8"
offset=".1357"
id="stop75" />
<stop
stop-color="#d4e2e9"
offset=".1737"
id="stop77" />
<stop
stop-color="#ecf2f5"
offset=".20990"
id="stop79" />
<stop
stop-color="#fafcfd"
offset=".24350"
id="stop81" />
<stop
stop-color="#fff"
offset=".27220"
id="stop83" />
</radialGradient>
<linearGradient
id="s"
y2="9.6875"
gradientUnits="userSpaceOnUse"
x2="-24.75"
gradientTransform="matrix(0,-0.25415316,0.20725536,0,4.9020693,18.325122)"
y1="11.566"
x1="-26.754">
<stop
stop-color="#fff"
offset="0"
id="stop86" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop88" />
</linearGradient>
<radialGradient
id="v"
gradientUnits="userSpaceOnUse"
cy="5.3000002"
cx="4"
gradientTransform="matrix(0,-0.47934299,0.24383045,0,4.0242988,34.475354)"
r="17">
<stop
stop-color="#fff"
offset="0"
id="stop91" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop93" />
</radialGradient>
<linearGradient
id="be"
y2="31.211"
gradientUnits="userSpaceOnUse"
x2="23.576"
gradientTransform="matrix(0.64407,-0.64045,0.66092,0.65072,61.423,86.661)"
y1="25.357"
x1="23.576">
<stop
offset="0"
id="stop3926" />
<stop
stop-color="#c3c3c3"
offset=".13483"
id="stop3928" />
<stop
stop-color="#8c8c8c"
offset=".20224"
id="stop3930" />
<stop
stop-color="#fff"
offset=".26966"
id="stop3932" />
<stop
stop-color="#757575"
offset=".4465"
id="stop3934" />
<stop
stop-color="#7d7d7d"
offset=".57114"
id="stop3936" />
<stop
stop-color="#b6b6b6"
offset=".72038"
id="stop3938" />
<stop
offset="1"
id="stop3940" />
</linearGradient>
<linearGradient
id="bf"
y2="30"
xlink:href="#ar"
gradientUnits="userSpaceOnUse"
x2="30.038"
gradientTransform="matrix(0.62586,-0.62234,0.77349,0.76155,59.298,83.616)"
y1="24.99"
x1="30.038" />
<linearGradient
id="ar">
<stop
stop-color="#3e3e3e"
offset="0"
id="stop3912" />
<stop
stop-color="#828282"
offset=".5"
id="stop3914" />
<stop
stop-color="#3c3c3c"
offset="1"
id="stop3916" />
</linearGradient>
<linearGradient
id="bg"
y2="30"
xlink:href="#aq"
gradientUnits="userSpaceOnUse"
x2="30.038"
gradientTransform="matrix(0.62586,-0.62234,0.77349,0.76155,59.119,83.794)"
y1="24.99"
x1="30.038" />
<linearGradient
id="aq">
<stop
stop-color="#999"
offset="0"
id="stop3919" />
<stop
stop-color="#fff"
offset=".5"
id="stop3921" />
<stop
stop-color="#777"
offset="1"
id="stop3923" />
</linearGradient>
<linearGradient
id="bh"
y2="30"
xlink:href="#ar"
gradientUnits="userSpaceOnUse"
x2="30.038"
gradientTransform="matrix(0.62586,-0.62234,0.77349,0.76155,59.921,82.996)"
y1="24.99"
x1="30.038" />
<linearGradient
id="linearGradient4420">
<stop
stop-color="#3e3e3e"
offset="0"
id="stop4422" />
<stop
stop-color="#828282"
offset=".5"
id="stop4424" />
<stop
stop-color="#3c3c3c"
offset="1"
id="stop4426" />
</linearGradient>
<linearGradient
id="bi"
y2="30"
xlink:href="#aq"
gradientUnits="userSpaceOnUse"
x2="30.038"
gradientTransform="matrix(0.62586,-0.62234,0.77349,0.76155,59.742,83.175)"
y1="24.99"
x1="30.038" />
<linearGradient
id="linearGradient4429">
<stop
stop-color="#999"
offset="0"
id="stop4431" />
<stop
stop-color="#fff"
offset=".5"
id="stop4433" />
<stop
stop-color="#777"
offset="1"
id="stop4435" />
</linearGradient>
<linearGradient
id="bj"
y2="30"
xlink:href="#ar"
gradientUnits="userSpaceOnUse"
x2="30.038"
gradientTransform="matrix(0.62586,-0.62234,0.77349,0.76155,60.547,82.374)"
y1="24.99"
x1="30.038" />
<linearGradient
id="linearGradient4438">
<stop
stop-color="#3e3e3e"
offset="0"
id="stop4440" />
<stop
stop-color="#828282"
offset=".5"
id="stop4442" />
<stop
stop-color="#3c3c3c"
offset="1"
id="stop4444" />
</linearGradient>
<linearGradient
id="bk"
y2="30"
xlink:href="#aq"
gradientUnits="userSpaceOnUse"
x2="30.038"
gradientTransform="matrix(0.62586,-0.62234,0.77349,0.76155,60.367,82.552)"
y1="24.99"
x1="30.038" />
<linearGradient
id="linearGradient4447">
<stop
stop-color="#999"
offset="0"
id="stop4449" />
<stop
stop-color="#fff"
offset=".5"
id="stop4451" />
<stop
stop-color="#777"
offset="1"
id="stop4453" />
</linearGradient>
<linearGradient
id="bl"
y2="26.030001"
gradientUnits="userSpaceOnUse"
x2="9"
gradientTransform="matrix(0.62586,-0.62234,0.77349,0.76155,59.06,83.852)"
y1="29.056999"
x1="9">
<stop
stop-color="#e4db7b"
offset="0"
id="stop3949" />
<stop
stop-color="#f4f0c8"
offset="1"
id="stop3951" />
</linearGradient>
<linearGradient
id="bm"
y2="41.391998"
gradientUnits="userSpaceOnUse"
x2="9.5221004"
gradientTransform="matrix(0.52586,0,0,0.51993,81.027,79.545)"
y1="37.372002"
x1="5.5179">
<stop
stop-color="#cbbd27"
offset="0"
id="stop3954" />
<stop
stop-color="#9b901d"
offset="1"
id="stop3956" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#v"
id="radialGradient3776"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-0.47934299,0.24383045,0,4.0242988,34.475354)"
cx="4"
cy="5.3000002"
r="17" />
<linearGradient
inkscape:collect="always"
xlink:href="#s"
id="linearGradient3778"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-0.25415316,0.20725536,0,4.9020693,18.325122)"
x1="-26.754"
y1="11.566"
x2="-24.75"
y2="9.6875" />
<radialGradient
inkscape:collect="always"
xlink:href="#u"
id="radialGradient3780"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-0.22456181,0.20619923,0,-0.06831569,48.261372)"
cx="102"
cy="112.3"
r="139.56" />
<radialGradient
inkscape:collect="always"
xlink:href="#t"
id="radialGradient3782"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-0.25288808,0.20993589,0,-0.32737717,51.222083)"
cx="102"
cy="112.3"
r="139.56" />
<linearGradient
inkscape:collect="always"
xlink:href="#o"
id="linearGradient3784"
gradientUnits="userSpaceOnUse"
x1="94.344002"
y1="102.34"
x2="86.536003"
y2="94.537003" />
<linearGradient
inkscape:collect="always"
xlink:href="#p"
id="linearGradient3786"
gradientUnits="userSpaceOnUse"
x1="95"
y1="103"
x2="86.586998"
y2="94.586998" />
<linearGradient
inkscape:collect="always"
xlink:href="#q"
id="linearGradient3788"
gradientUnits="userSpaceOnUse"
x1="95"
y1="103"
x2="87.292999"
y2="95.292999" />
<linearGradient
inkscape:collect="always"
xlink:href="#r"
id="linearGradient3790"
gradientUnits="userSpaceOnUse"
x1="96"
y1="104"
x2="88"
y2="96" />
<linearGradient
inkscape:collect="always"
xlink:href="#be"
id="linearGradient3792"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.64407,-0.64045,0.66092,0.65072,61.423,86.661)"
x1="23.576"
y1="25.357"
x2="23.576"
y2="31.211" />
<linearGradient
inkscape:collect="always"
xlink:href="#ar"
id="linearGradient3794"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.62586,-0.62234,0.77349,0.76155,59.298,83.616)"
x1="30.038"
y1="24.99"
x2="30.038"
y2="30" />
<linearGradient
inkscape:collect="always"
xlink:href="#aq"
id="linearGradient3796"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.62586,-0.62234,0.77349,0.76155,59.119,83.794)"
x1="30.038"
y1="24.99"
x2="30.038"
y2="30" />
<linearGradient
inkscape:collect="always"
xlink:href="#ar"
id="linearGradient3798"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.62586,-0.62234,0.77349,0.76155,59.921,82.996)"
x1="30.038"
y1="24.99"
x2="30.038"
y2="30" />
<linearGradient
inkscape:collect="always"
xlink:href="#aq"
id="linearGradient3800"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.62586,-0.62234,0.77349,0.76155,59.742,83.175)"
x1="30.038"
y1="24.99"
x2="30.038"
y2="30" />
<linearGradient
inkscape:collect="always"
xlink:href="#ar"
id="linearGradient3802"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.62586,-0.62234,0.77349,0.76155,60.547,82.374)"
x1="30.038"
y1="24.99"
x2="30.038"
y2="30" />
<linearGradient
inkscape:collect="always"
xlink:href="#aq"
id="linearGradient3804"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.62586,-0.62234,0.77349,0.76155,60.367,82.552)"
x1="30.038"
y1="24.99"
x2="30.038"
y2="30" />
<linearGradient
inkscape:collect="always"
xlink:href="#bl"
id="linearGradient3806"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.62586,-0.62234,0.77349,0.76155,59.06,83.852)"
x1="9"
y1="29.056999"
x2="9"
y2="26.030001" />
<linearGradient
inkscape:collect="always"
xlink:href="#bm"
id="linearGradient3808"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.52586,0,0,0.51993,81.027,79.545)"
x1="5.5179"
y1="37.372002"
x2="9.5221004"
y2="41.391998" />
</defs>
<rect
height="48"
width="48"
y="-42.449997"
x="-50.849998"
id="rect95"
style="opacity:0" />
<g
id="g3747"
transform="matrix(1.8574036,0,0,1.8098801,0.30839211,-39.214582)">
<path
style="opacity:0.68015998;fill:url(#radialGradient3776)"
inkscape:connector-curvature="0"
id="path97"
d="m 5.7311015,31.405978 c 0,0.218109 0.1394995,0.389179 0.3173568,0.389179 h 7.6555727 c 0.177857,0 0.317358,-0.17107 0.317358,-0.389179 v -7.86319 c 0,-0.218109 -0.139501,-0.389178 -0.317358,-0.389178 H 8.5292163 c -0.2884891,0 -0.8910636,0.123766 -1.2759287,0.595694 l -1.037127,1.271232 C 5.8315529,25.492469 5.7306224,26.23142 5.7306224,26.585178 v 4.82103 z" />
<path
style="fill:none;stroke:url(#linearGradient3778);stroke-width:0.2295121"
inkscape:connector-curvature="0"
id="path99"
d="m 5.8347112,31.405978 c 0,0.148217 0.092868,0.262098 0.2137317,0.262098 h 7.6555741 c 0.120865,0 0.213731,-0.113881 0.213731,-0.262098 v -7.86319 c 0,-0.148217 -0.09286,-0.262099 -0.213731,-0.262099 H 8.529201 c -0.2650831,0 -0.8508769,0.122113 -1.2046748,0.555993 l -1.0366116,1.271231 c -0.3539525,0.43382 -0.4535434,1.15218 -0.4535434,1.477244 v 4.821029 z" />
<path
style="opacity:0.7;fill:#000000;fill-opacity:1;filter:url(#n)"
inkscape:connector-curvature="0"
id="path101"
transform="matrix(0,-0.2662987,0.22165967,0,-1.6902875,53.992085)"
d="m 23,9 0.04082,112 h 61.131 c 0.53,0 1.039,-0.211 1.414,-0.586 l 32.824,-32.824 c 0.38,-0.375 0.59,-0.884 0.59,-1.414 V 9.016 h -96 z" />
<path
style="fill:url(#radialGradient3780)"
inkscape:connector-curvature="0"
id="path103"
d="M 1.5812474,44.668265 H 24.675438 V 30.931147 c 0,-0.119018 -0.04352,-0.233319 -0.120832,-0.317535 l -6.768739,-7.37201 c -0.0774,-0.084 -0.182485,-0.131366 -0.291664,-0.131366 H 1.5813858 v 21.558145 z" />
<path
style="fill:url(#radialGradient3782)"
inkscape:connector-curvature="0"
id="path105"
d="m 1.5620727,46.670276 c 0,0.139336 0.094258,0.252887 0.2099358,0.252887 H 24.4453 c 0.11589,0 0.209935,-0.113551 0.209935,-0.252887 V 31.706543 c 0,-0.06651 -0.02224,-0.131757 -0.06151,-0.178789 l -6.89155,-8.301926 c -0.03934,-0.04744 -0.09356,-0.07421 -0.148834,-0.07421 H 1.7721307 c -0.1156762,0 -0.2099358,0.113294 -0.2099358,0.252888 v 23.265659 z" />
<path
style="fill:none;stroke:#723137;stroke-width:1.21292329;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path107"
d="m 8.8893243,46.768584 v -7.00828 H 24.643157" />
<path
style="fill:none;stroke:#6e2716;stroke-width:1.45951974px;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path109"
d="M 23.303472,42.907878 H 20.154997" />
<path
style="fill:none;stroke:#632716;stroke-width:1.61190331px;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path111"
d="M 17.114466,42.966273 H 11.274947" />
<path
style="fill:none;stroke:#822716;stroke-width:1.47296751px;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path113"
d="M 24.683227,45.990214 H 20.235589" />
<path
style="fill:none;stroke:#685b00;stroke-width:1.41400003;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
id="path115"
d="M 18.660247,46.039958 H 11.218576" />
<g
id="g117"
transform="matrix(0,-0.25415314,0.20725537,0,-0.1950509,51.653459)">
<path
style="opacity:0.1;fill:url(#linearGradient3784)"
inkscape:connector-curvature="0"
id="path119"
d="M 111.41,86.586 C 111.66,86.336 93.035,93 88,93 c -1.654,0 -3,1.346 -3,3 0,5.035 -6.664,23.664 -6.414,23.414 l 32.828,-32.828 z" />
<path
style="opacity:0.1;fill:url(#linearGradient3786)"
inkscape:connector-curvature="0"
id="path121"
d="M 111.41,86.586 C 111.79,86.211 97.444,94 88,94 c -1.103,0 -2,0.897 -2,2 0,9.444 -7.789,23.789 -7.414,23.414 l 32.828,-32.828 z" />
<path
style="opacity:0.1;fill:url(#linearGradient3788)"
inkscape:connector-curvature="0"
id="path123"
d="M 111.41,86.586 C 111.65,86.347 97.807,95 88,95 c -0.553,0 -1,0.447 -1,1 0,9.807 -8.653,23.653 -8.414,23.414 l 32.828,-32.828 z" />
<path
style="fill:url(#linearGradient3790)"
inkscape:connector-curvature="0"
id="path125"
d="m 78.586,119.41 c 0,0 11.914,-9.914 17.414,-15.414 5.5,-5.5 15.414,-17.414 15.414,-17.414 0,0 -13.164,9.414 -23.414,9.414 0,10.25 -9.414,23.414 -9.414,23.414 z" />
</g>
<g
id="g4362"
transform="matrix(0.74600592,-0.10339331,0.10165527,0.75872862,-68.990862,-26.465794)">
<path
id="path4364"
d="m 85.365,96.011 c 0.43282,-0.32935 1.5837,0.20459 2.6183,1.2232 1.0321,1.0162 1.5508,2.1286 1.225,2.5608 -0.0012,0.0017 0.02544,0.02217 0.02417,0.0238 l 15.708,-15.618 c 0.39874,-0.3965 -0.14267,-1.5725 -1.2101,-2.6235 -1.0674,-1.0509 -2.2586,-1.5808 -2.6574,-1.1843 l -15.705,15.618 z"
inkscape:connector-curvature="0"
style="fill:url(#linearGradient3792);stroke:#000000;stroke-width:0.55532998;stroke-linejoin:round" />
<path
id="path4366"
d="m 99.153,82.3 c 0.43282,-0.32935 1.5837,0.20459 2.6183,1.2232 1.0321,1.0162 1.5508,2.1285 1.225,2.5608 -0.001,0.0017 0.0254,0.02217 0.0242,0.0238 l 1.9167,-1.9059 0.0391,-0.0389 c 0.001,-0.0017 -0.0254,-0.02215 -0.0242,-0.0238 0.32575,-0.43223 -0.19292,-1.5446 -1.225,-2.5608 -1.0346,-1.0186 -2.1854,-1.5525 -2.6183,-1.2232 l -0.04,0.039 -1.917,1.906 z"
inkscape:connector-curvature="0"
style="opacity:0.8;fill:#ff9de8;stroke:#dd78c5;stroke-width:0.55532998;stroke-linejoin:round" />
<path
id="path4368"
d="m 85.365,96.011 c 0.43282,-0.32935 1.5837,0.20459 2.6183,1.2232 1.0321,1.0162 1.5508,2.1286 1.225,2.5608 -0.0012,0.0017 0.02544,0.02217 0.02417,0.0238 l 10.816,-10.755 0.0391,-0.0389 c 0.001,-0.0017 -0.0254,-0.02216 -0.0242,-0.0238 0.32575,-0.43223 -0.19293,-1.5446 -1.225,-2.5608 -1.0346,-1.0186 -2.1854,-1.5525 -2.6183,-1.2232 l -0.03911,0.0389 -10.816,10.755 z"
inkscape:connector-curvature="0"
style="opacity:0.6" />
<path
id="path4370"
d="m 97.005,84.436 c 0.43282,-0.32935 1.5837,0.20459 2.6183,1.2232 1.0321,1.0162 1.5508,2.1286 1.225,2.5608 -10e-4,0.0017 0.0254,0.02217 0.0242,0.0238 l 0.19558,-0.19448 c 0.001,-0.0017 -0.0254,-0.02215 -0.0242,-0.0238 0.32575,-0.43222 -0.19292,-1.5446 -1.225,-2.5608 -1.0346,-1.0186 -2.1854,-1.5525 -2.6183,-1.2232 l -0.197,0.194 z"
inkscape:connector-curvature="0"
style="fill:url(#linearGradient3794)" />
<path
id="path4372"
d="m 96.826,84.614 c 0.43282,-0.32935 1.5837,0.20459 2.6183,1.2232 1.0321,1.0162 1.5508,2.1285 1.225,2.5608 -0.001,0.0017 0.0254,0.02217 0.0242,0.0238 l 0.19558,-0.19448 c 10e-4,-0.0017 -0.0254,-0.02215 -0.0242,-0.0238 0.32575,-0.43222 -0.19292,-1.5446 -1.225,-2.5608 -1.0346,-1.0186 -2.1854,-1.5525 -2.6183,-1.2232 l -0.196,0.194 z"
inkscape:connector-curvature="0"
style="fill:url(#linearGradient3796)" />
<path
id="path4374"
d="m 97.628,83.817 c 0.43282,-0.32935 1.5837,0.20459 2.6183,1.2232 1.0321,1.0162 1.5508,2.1286 1.225,2.5608 -0.001,0.0017 0.0254,0.02217 0.0242,0.0238 l 0.19558,-0.19448 c 0.001,-0.0017 -0.0254,-0.02215 -0.0242,-0.0238 0.32575,-0.43222 -0.19292,-1.5446 -1.225,-2.5608 -1.0346,-1.0186 -2.1854,-1.5525 -2.6183,-1.2232 l -0.204,0.194 z"
inkscape:connector-curvature="0"
style="fill:url(#linearGradient3798)" />
<path
id="path4376"
d="m 97.448,83.995 c 0.43282,-0.32935 1.5837,0.20459 2.6183,1.2232 1.0321,1.0162 1.5508,2.1286 1.225,2.5608 -0.001,0.0017 0.0254,0.02217 0.0242,0.0238 l 0.19558,-0.19448 c 10e-4,-0.0017 -0.0254,-0.02215 -0.0242,-0.0238 0.32575,-0.43222 -0.19292,-1.5446 -1.225,-2.5608 -1.0346,-1.0186 -2.1854,-1.5525 -2.6183,-1.2232 l -0.204,0.194 z"
inkscape:connector-curvature="0"
style="fill:url(#linearGradient3800)" />
<path
id="path4378"
d="m 98.254,83.194 c 0.43282,-0.32935 1.5837,0.20459 2.6183,1.2232 1.0321,1.0162 1.5508,2.1286 1.225,2.5608 -0.001,0.0017 0.0254,0.02217 0.0242,0.0238 l 0.19558,-0.19448 c 10e-4,-0.0017 -0.0254,-0.02216 -0.0242,-0.0238 0.32575,-0.43223 -0.19292,-1.5446 -1.225,-2.5608 -1.0346,-1.0186 -2.1854,-1.5525 -2.6183,-1.2232 l -0.198,0.194 z"
inkscape:connector-curvature="0"
style="fill:url(#linearGradient3802)" />
<path
id="path4380"
d="m 98.074,83.372 c 0.43282,-0.32935 1.5837,0.20459 2.6183,1.2232 1.0321,1.0162 1.5508,2.1286 1.225,2.5608 -10e-4,0.0017 0.0254,0.02217 0.0242,0.0238 l 0.19558,-0.19448 c 0.001,-0.0017 -0.0254,-0.02216 -0.0242,-0.0238 0.32575,-0.43223 -0.19292,-1.5446 -1.225,-2.5608 -1.0346,-1.0186 -2.1854,-1.5525 -2.6183,-1.2232 l -0.198,0.194 z"
inkscape:connector-curvature="0"
style="fill:url(#linearGradient3804)" />
<path
id="path4382"
d="m 82.185,102.91 7.0294,-3.0074 c 0.32575,-0.43222 -0.20033,-1.6548 -1.2324,-2.671 -1.0346,-1.0186 -2.2398,-1.5494 -2.6726,-1.22 l -3.124,6.898 z"
inkscape:connector-curvature="0"
style="fill:url(#linearGradient3806);fill-rule:evenodd;stroke:url(#linearGradient3808);stroke-width:0.55532998" />
<path
id="path4384"
d="m 83.046,101.04 -0.86146,1.8612 1.9008,-0.83782 c -0.14196,-0.17111 -0.2723,-0.3455 -0.44432,-0.51486 -0.19804,-0.19498 -0.39436,-0.35167 -0.59506,-0.50847 z"
inkscape:connector-curvature="0"
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.55532998" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -0,0 +1,131 @@
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="400"
height="200"
id="svg3509"
version="1.1"
inkscape:version="0.48.2 r9819"
sodipodi:docname="kicad_logo_final.svg"
inkscape:export-filename="/home/fabrizio/Desktop/kicad_logo2.png"
inkscape:export-xdpi="130.52866"
inkscape:export-ydpi="130.52866">
<defs
id="defs3511" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="319.71301"
inkscape:cy="107.41472"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1280"
inkscape:window-height="941"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:snap-grids="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:snap-to-guides="false" />
<metadata
id="metadata3514">
<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>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-852.36218)">
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.16592622000000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3001"
width="335.33405"
height="136.76265"
x="40.547253"
y="883.62366"
rx="0.79142594"
ry="0.68401301"
inkscape:export-filename="/home/fabrizio/Desktop/kicad_logo_final.png"
inkscape:export-xdpi="130.52866"
inkscape:export-ydpi="130.52866" />
<rect
style="fill:#314cb0;fill-opacity:1;fill-rule:nonzero;stroke:#1d2d68;stroke-width:4.85048628;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3438-4-1-6-9-8-4"
width="116.24297"
height="111.73183"
x="50.753147"
y="901.97614"
rx="0.92550105"
ry="0.96813995"
inkscape:export-filename="/home/fabrizio/Desktop/kicad_logo_final.png"
inkscape:export-xdpi="130.52866"
inkscape:export-ydpi="130.52866" />
<text
xml:space="preserve"
style="font-size:120.79350281px;font-style:normal;font-weight:normal;line-height:122.00000286%;letter-spacing:0px;word-spacing:0px;fill:#1b2b63;fill-opacity:1;stroke:none;font-family:Sans"
x="47.593891"
y="1002.9949"
id="text3428-5-7-3-3-5-7"
sodipodi:linespacing="122%"
inkscape:export-filename="/home/fabrizio/Desktop/kicad_logo_final.png"
inkscape:export-xdpi="130.52866"
inkscape:export-ydpi="130.52866"><tspan
sodipodi:role="line"
id="tspan3430-1-1-1-0-9-6"
x="47.593891"
y="1002.9949"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:122.00000286%;letter-spacing:0px;fill:#1b2b63;fill-opacity:1;font-family:Tiresias LPfont;-inkscape-font-specification:Tiresias LPfont Bold"><tspan
id="tspan4498-9-7-2-7-3"
style="line-height:122.00000286%;letter-spacing:0px;fill:#ffffff;fill-opacity:1">Ki</tspan><tspan
id="tspan3647"
style="letter-spacing:-6.5999999px">Cad</tspan></tspan></text>
<rect
style="fill:#314cb0;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect4352-5-1"
width="28.315174"
height="27.030817"
x="135.29004"
y="906.65179"
rx="0"
ry="0"
inkscape:export-filename="/home/fabrizio/Desktop/kicad_logo_final.png"
inkscape:export-xdpi="130.52866"
inkscape:export-ydpi="130.52866" />
<path
sodipodi:type="arc"
style="fill:#ff7700;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3552-6-3-7"
sodipodi:cx="504.82373"
sodipodi:cy="2430.9678"
sodipodi:rx="23.486046"
sodipodi:ry="14.142136"
d="m 528.30978,2430.9678 c 0,7.8105 -10.51506,14.1421 -23.48605,14.1421 -12.97098,0 -23.48605,-6.3316 -23.48605,-14.1421 0,-7.8105 10.51507,-14.1422 23.48605,-14.1422 12.97099,0 23.48605,6.3317 23.48605,14.1422 z"
transform="matrix(0.51052206,0,0,0.84532838,-108.54549,-1152.961)"
inkscape:export-filename="/home/fabrizio/Desktop/kicad_logo_final.png"
inkscape:export-xdpi="130.52866"
inkscape:export-ydpi="130.52866" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -0,0 +1,389 @@
<?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.0"
id="svg2"
inkscape:version="0.48.2 r9819"
sodipodi:docname="pagelayout_load.svg">
<metadata
id="metadata133">
<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="1280"
inkscape:window-height="977"
id="namedview131"
showgrid="true"
inkscape:snap-to-guides="false"
inkscape:snap-grids="false"
inkscape:zoom="13.333333"
inkscape:cx="7.6914467"
inkscape:cy="6.5192721"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
inkscape:current-layer="svg2">
<inkscape:grid
type="xygrid"
id="grid3110"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<defs
id="defs4">
<filter
id="n"
color-interpolation-filters="sRGB">
<feGaussianBlur
stdDeviation="1.0394514"
id="feGaussianBlur7" />
</filter>
<marker
id="l"
refY="0"
refX="0"
overflow="visible"
orient="auto"
style="overflow:visible">
<path
d="M 5.77,0 -2.88,5 V -5 l 8.65,5 z"
transform="scale(-0.4,-0.4)"
id="path10"
inkscape:connector-curvature="0"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" />
</marker>
<marker
id="m"
refY="0"
refX="0"
overflow="visible"
orient="auto"
style="overflow:visible">
<path
d="M 5.77,0 -2.88,5 V -5 l 8.65,5 z"
transform="scale(0.4,0.4)"
id="path13"
inkscape:connector-curvature="0"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" />
</marker>
<linearGradient
id="o"
y2="94.537003"
gradientUnits="userSpaceOnUse"
x2="86.536003"
y1="102.34"
x1="94.344002">
<stop
stop-color="#fff"
offset="0"
id="stop16" />
<stop
stop-color="#555753"
offset="1"
id="stop18" />
</linearGradient>
<linearGradient
id="p"
y2="94.586998"
gradientUnits="userSpaceOnUse"
x2="86.586998"
y1="103"
x1="95">
<stop
stop-color="#fff"
offset="0"
id="stop21" />
<stop
stop-color="#555753"
offset="1"
id="stop23" />
</linearGradient>
<linearGradient
id="q"
y2="95.292999"
gradientUnits="userSpaceOnUse"
x2="87.292999"
y1="103"
x1="95">
<stop
stop-color="#fff"
offset="0"
id="stop26" />
<stop
stop-color="#393b38"
offset="1"
id="stop28" />
</linearGradient>
<linearGradient
id="r"
y2="96"
gradientUnits="userSpaceOnUse"
x2="88"
y1="104"
x1="96">
<stop
stop-color="#888a85"
offset="0"
id="stop31" />
<stop
stop-color="#8c8e89"
offset=".0072"
id="stop33" />
<stop
stop-color="#abaca9"
offset=".0673"
id="stop35" />
<stop
stop-color="#c5c6c4"
offset=".1347"
id="stop37" />
<stop
stop-color="#dbdbda"
offset=".2115"
id="stop39" />
<stop
stop-color="#ebebeb"
offset=".3012"
id="stop41" />
<stop
stop-color="#f7f7f6"
offset=".4122"
id="stop43" />
<stop
stop-color="#fdfdfd"
offset=".5679"
id="stop45" />
<stop
stop-color="#fff"
offset="1"
id="stop47" />
</linearGradient>
<radialGradient
id="t"
gradientUnits="userSpaceOnUse"
cy="112.3"
cx="102"
gradientTransform="matrix(0,-0.25288808,0.20993589,0,-0.32737717,29.222083)"
r="139.56">
<stop
stop-color="#535557"
offset="0"
id="stop50" />
<stop
stop-color="#898a8c"
offset=".11366"
id="stop52" />
<stop
stop-color="#ececec"
offset=".20297"
id="stop54" />
<stop
stop-color="#fafafa"
offset=".23630"
id="stop56" />
<stop
stop-color="#fff"
offset=".27220"
id="stop58" />
<stop
stop-color="#fafafa"
offset=".53130"
id="stop60" />
<stop
stop-color="#ebecec"
offset=".84490"
id="stop62" />
<stop
stop-color="#e1e2e3"
offset="1"
id="stop64" />
</radialGradient>
<radialGradient
id="u"
gradientUnits="userSpaceOnUse"
cy="112.3"
cx="102"
gradientTransform="matrix(0,-0.22456181,0.20619923,0,-0.06831569,26.261372)"
r="139.56">
<stop
stop-color="#00537d"
offset="0"
id="stop67" />
<stop
stop-color="#186389"
offset=".0151"
id="stop69" />
<stop
stop-color="#558ca8"
offset=".0558"
id="stop71" />
<stop
stop-color="#89afc3"
offset=".0964"
id="stop73" />
<stop
stop-color="#b3ccd8"
offset=".1357"
id="stop75" />
<stop
stop-color="#d4e2e9"
offset=".1737"
id="stop77" />
<stop
stop-color="#ecf2f5"
offset=".20990"
id="stop79" />
<stop
stop-color="#fafcfd"
offset=".24350"
id="stop81" />
<stop
stop-color="#fff"
offset=".27220"
id="stop83" />
</radialGradient>
<linearGradient
id="s"
y2="9.6875"
gradientUnits="userSpaceOnUse"
x2="-24.75"
gradientTransform="matrix(0,-0.25415316,0.20725536,0,4.9020693,-3.6748783)"
y1="11.566"
x1="-26.754">
<stop
stop-color="#fff"
offset="0"
id="stop86" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop88" />
</linearGradient>
<radialGradient
id="v"
gradientUnits="userSpaceOnUse"
cy="5.3000002"
cx="4"
gradientTransform="matrix(0,-0.47934299,0.24383045,0,4.0242988,12.475354)"
r="17">
<stop
stop-color="#fff"
offset="0"
id="stop91" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop93" />
</radialGradient>
</defs>
<rect
height="48"
width="48"
y="-64.449997"
x="-50.849998"
id="rect95"
style="opacity:0" />
<path
d="m 5.7311015,9.4059783 c 0,0.2181084 0.1394995,0.3891786 0.3173568,0.3891786 h 7.6555727 c 0.177857,0 0.317358,-0.1710702 0.317358,-0.3891786 V 1.5427882 c 0,-0.2181091 -0.139501,-0.3891784 -0.317358,-0.3891784 H 8.5292163 c -0.2884891,0 -0.8910636,0.1237663 -1.2759287,0.5956945 L 6.2161606,3.0205356 C 5.8315529,3.4924694 5.7306224,4.2314196 5.7306224,4.5851785 v 4.8210291 z"
id="path97"
inkscape:connector-curvature="0"
style="opacity:0.68015998;fill:url(#v)" />
<path
d="m 5.8347112,9.4059783 c 0,0.1482164 0.092868,0.2620982 0.2137317,0.2620982 h 7.6555741 c 0.120865,0 0.213731,-0.1138818 0.213731,-0.2620982 V 1.5427882 c 0,-0.1482173 -0.09286,-0.262099 -0.213731,-0.262099 H 8.529201 c -0.2650831,0 -0.8508769,0.1221125 -1.2046748,0.5559925 L 6.2879146,3.1079128 C 5.9339621,3.5417326 5.8343712,4.260093 5.8343712,4.5851566 v 4.8210292 z"
id="path99"
inkscape:connector-curvature="0"
style="fill:none;stroke:url(#s);stroke-width:0.2295121" />
<path
d="m 23,9 0.04082,112 h 61.131 c 0.53,0 1.039,-0.211 1.414,-0.586 l 32.824,-32.824 c 0.38,-0.375 0.59,-0.884 0.59,-1.414 V 9.016 h -96 z"
transform="matrix(0,-0.2662987,0.22165967,0,-1.6902875,31.992085)"
id="path101"
inkscape:connector-curvature="0"
style="opacity:0.7;fill:#000000;fill-opacity:1;filter:url(#n)" />
<path
d="M 1.5812474,22.668265 H 24.675438 V 8.9311466 c 0,-0.1190174 -0.04352,-0.2333188 -0.120832,-0.3175342 L 17.785867,1.2416023 C 17.70847,1.1576052 17.603382,1.1102357 17.494203,1.1102357 H 1.5813858 V 22.668381 z"
id="path103"
inkscape:connector-curvature="0"
style="fill:url(#u)" />
<path
d="m 1.5620727,24.670276 c 0,0.139336 0.094258,0.252887 0.2099358,0.252887 H 24.4453 c 0.11589,0 0.209935,-0.113551 0.209935,-0.252887 V 9.7065431 c 0,-0.066509 -0.02224,-0.1317571 -0.06151,-0.1787888 l -6.89155,-8.3019261 c -0.03934,-0.047436 -0.09356,-0.074212 -0.148834,-0.074212 H 1.7721307 c -0.1156762,0 -0.2099358,0.1132939 -0.2099358,0.2528881 V 24.670163 z"
id="path105"
inkscape:connector-curvature="0"
style="fill:url(#t)" />
<path
d="m 8.8893243,24.768584 v -7.00828 H 24.643157"
id="path107"
inkscape:connector-curvature="0"
style="fill:none;stroke:#723137;stroke-width:1.21292329;stroke-opacity:1" />
<path
d="M 23.303472,20.907878 H 20.154997"
id="path109"
inkscape:connector-curvature="0"
style="fill:none;stroke:#6e2716;stroke-width:1.45951974px;stroke-opacity:1" />
<path
d="M 17.114466,20.966273 H 11.274947"
id="path111"
inkscape:connector-curvature="0"
style="fill:none;stroke:#632716;stroke-width:1.61190331px;stroke-opacity:1" />
<path
d="M 24.683227,23.990214 H 20.235589"
id="path113"
inkscape:connector-curvature="0"
style="fill:none;stroke:#822716;stroke-width:1.47296751px;stroke-opacity:1" />
<path
d="M 18.660247,24.039958 H 11.218576"
id="path115"
inkscape:connector-curvature="0"
style="fill:none;stroke:#685b00;stroke-width:1.41399999999999990;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
<g
transform="matrix(0,-0.25415314,0.20725537,0,-0.1950509,29.653459)"
id="g117">
<path
d="M 111.41,86.586 C 111.66,86.336 93.035,93 88,93 c -1.654,0 -3,1.346 -3,3 0,5.035 -6.664,23.664 -6.414,23.414 l 32.828,-32.828 z"
id="path119"
inkscape:connector-curvature="0"
style="opacity:0.1;fill:url(#o)" />
<path
d="M 111.41,86.586 C 111.79,86.211 97.444,94 88,94 c -1.103,0 -2,0.897 -2,2 0,9.444 -7.789,23.789 -7.414,23.414 l 32.828,-32.828 z"
id="path121"
inkscape:connector-curvature="0"
style="opacity:0.1;fill:url(#p)" />
<path
d="M 111.41,86.586 C 111.65,86.347 97.807,95 88,95 c -0.553,0 -1,0.447 -1,1 0,9.807 -8.653,23.653 -8.414,23.414 l 32.828,-32.828 z"
id="path123"
inkscape:connector-curvature="0"
style="opacity:0.1;fill:url(#q)" />
<path
d="m 78.586,119.41 c 0,0 11.914,-9.914 17.414,-15.414 5.5,-5.5 15.414,-17.414 15.414,-17.414 0,0 -13.164,9.414 -23.414,9.414 0,10.25 -9.414,23.414 -9.414,23.414 z"
id="path125"
inkscape:connector-curvature="0"
style="fill:url(#r)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,583 @@
<?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.0"
id="svg2"
inkscape:version="0.48.2 r9819"
sodipodi:docname="pagelayout_load.svg">
<metadata
id="metadata133">
<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="1280"
inkscape:window-height="977"
id="namedview131"
showgrid="true"
inkscape:snap-to-guides="false"
inkscape:snap-grids="false"
inkscape:zoom="13.333333"
inkscape:cx="7.6914467"
inkscape:cy="6.5192721"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
inkscape:current-layer="svg2">
<inkscape:grid
type="xygrid"
id="grid3110"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<defs
id="defs4">
<filter
id="n"
color-interpolation-filters="sRGB">
<feGaussianBlur
stdDeviation="1.0394514"
id="feGaussianBlur7" />
</filter>
<marker
id="l"
refY="0"
refX="0"
overflow="visible"
orient="auto"
style="overflow:visible">
<path
d="M 5.77,0 -2.88,5 V -5 l 8.65,5 z"
transform="scale(-0.4,-0.4)"
id="path10"
inkscape:connector-curvature="0"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" />
</marker>
<marker
id="m"
refY="0"
refX="0"
overflow="visible"
orient="auto"
style="overflow:visible">
<path
d="M 5.77,0 -2.88,5 V -5 l 8.65,5 z"
transform="scale(0.4,0.4)"
id="path13"
inkscape:connector-curvature="0"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" />
</marker>
<linearGradient
id="o"
y2="94.537003"
gradientUnits="userSpaceOnUse"
x2="86.536003"
y1="102.34"
x1="94.344002">
<stop
stop-color="#fff"
offset="0"
id="stop16" />
<stop
stop-color="#555753"
offset="1"
id="stop18" />
</linearGradient>
<linearGradient
id="p"
y2="94.586998"
gradientUnits="userSpaceOnUse"
x2="86.586998"
y1="103"
x1="95">
<stop
stop-color="#fff"
offset="0"
id="stop21" />
<stop
stop-color="#555753"
offset="1"
id="stop23" />
</linearGradient>
<linearGradient
id="q"
y2="95.292999"
gradientUnits="userSpaceOnUse"
x2="87.292999"
y1="103"
x1="95">
<stop
stop-color="#fff"
offset="0"
id="stop26" />
<stop
stop-color="#393b38"
offset="1"
id="stop28" />
</linearGradient>
<linearGradient
id="r"
y2="96"
gradientUnits="userSpaceOnUse"
x2="88"
y1="104"
x1="96">
<stop
stop-color="#888a85"
offset="0"
id="stop31" />
<stop
stop-color="#8c8e89"
offset=".0072"
id="stop33" />
<stop
stop-color="#abaca9"
offset=".0673"
id="stop35" />
<stop
stop-color="#c5c6c4"
offset=".1347"
id="stop37" />
<stop
stop-color="#dbdbda"
offset=".2115"
id="stop39" />
<stop
stop-color="#ebebeb"
offset=".3012"
id="stop41" />
<stop
stop-color="#f7f7f6"
offset=".4122"
id="stop43" />
<stop
stop-color="#fdfdfd"
offset=".5679"
id="stop45" />
<stop
stop-color="#fff"
offset="1"
id="stop47" />
</linearGradient>
<radialGradient
id="t"
gradientUnits="userSpaceOnUse"
cy="112.3"
cx="102"
gradientTransform="matrix(0,-0.25288808,0.20993589,0,-0.32737717,29.222083)"
r="139.56">
<stop
stop-color="#535557"
offset="0"
id="stop50" />
<stop
stop-color="#898a8c"
offset=".11366"
id="stop52" />
<stop
stop-color="#ececec"
offset=".20297"
id="stop54" />
<stop
stop-color="#fafafa"
offset=".23630"
id="stop56" />
<stop
stop-color="#fff"
offset=".27220"
id="stop58" />
<stop
stop-color="#fafafa"
offset=".53130"
id="stop60" />
<stop
stop-color="#ebecec"
offset=".84490"
id="stop62" />
<stop
stop-color="#e1e2e3"
offset="1"
id="stop64" />
</radialGradient>
<radialGradient
id="u"
gradientUnits="userSpaceOnUse"
cy="112.3"
cx="102"
gradientTransform="matrix(0,-0.22456181,0.20619923,0,-0.06831569,26.261372)"
r="139.56">
<stop
stop-color="#00537d"
offset="0"
id="stop67" />
<stop
stop-color="#186389"
offset=".0151"
id="stop69" />
<stop
stop-color="#558ca8"
offset=".0558"
id="stop71" />
<stop
stop-color="#89afc3"
offset=".0964"
id="stop73" />
<stop
stop-color="#b3ccd8"
offset=".1357"
id="stop75" />
<stop
stop-color="#d4e2e9"
offset=".1737"
id="stop77" />
<stop
stop-color="#ecf2f5"
offset=".20990"
id="stop79" />
<stop
stop-color="#fafcfd"
offset=".24350"
id="stop81" />
<stop
stop-color="#fff"
offset=".27220"
id="stop83" />
</radialGradient>
<linearGradient
id="s"
y2="9.6875"
gradientUnits="userSpaceOnUse"
x2="-24.75"
gradientTransform="matrix(0,-0.25415316,0.20725536,0,4.9020693,-3.6748783)"
y1="11.566"
x1="-26.754">
<stop
stop-color="#fff"
offset="0"
id="stop86" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop88" />
</linearGradient>
<radialGradient
id="v"
gradientUnits="userSpaceOnUse"
cy="5.3000002"
cx="4"
gradientTransform="matrix(0,-0.47934299,0.24383045,0,4.0242988,12.475354)"
r="17">
<stop
stop-color="#fff"
offset="0"
id="stop91" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop93" />
</radialGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#i"
id="linearGradient3123"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(6.3922,12.185)"
x1="28.079"
y1="12.338"
x2="30.431999"
y2="14.691" />
<linearGradient
id="i"
y2="14.691"
gradientUnits="userSpaceOnUse"
x2="30.431999"
gradientTransform="translate(6.3922,12.185)"
y1="12.338"
x1="28.079">
<stop
stop-color="#fcaf3e"
offset="0"
id="stop7" />
<stop
stop-color="#ce5c00"
offset="1"
id="stop9" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#j"
id="linearGradient3125"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(6.3922,12.185)"
x1="23.448"
y1="21.481001"
x2="22.809999"
y2="22.118999" />
<linearGradient
id="j"
y2="22.118999"
gradientUnits="userSpaceOnUse"
x2="22.809999"
gradientTransform="translate(6.3922,12.185)"
y1="21.481001"
x1="23.448">
<stop
stop-color="#ce5c00"
offset="0"
id="stop12" />
<stop
stop-color="#ce5c00"
offset="1"
id="stop14" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#k"
id="linearGradient3127"
gradientUnits="userSpaceOnUse"
x1="26.379"
y1="34.389999"
x2="25.485001"
y2="32.714001" />
<linearGradient
id="k"
y2="32.714001"
gradientUnits="userSpaceOnUse"
x2="25.485001"
y1="34.389999"
x1="26.379">
<stop
stop-color="#e9b96e"
offset="0"
id="stop17" />
<stop
stop-color="#fff"
offset="1"
id="stop19" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#n-1"
id="radialGradient3129"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.35473,-0.34328,0.35696,0.34544,130.15,-71.026)"
cx="-138.84"
cy="128"
r="9.1267004" />
<radialGradient
id="n-1"
gradientUnits="userSpaceOnUse"
cy="128"
cx="-138.84"
gradientTransform="matrix(0.35473,-0.34328,0.35696,0.34544,130.15,-71.026)"
r="9.1267004">
<stop
stop-color="#f9a9a9"
offset="0"
id="stop22" />
<stop
stop-color="#ab5f5f"
offset="1"
id="stop24" />
</radialGradient>
<linearGradient
y2="134.25"
x2="-158.75"
y1="115.94"
x1="-158.75"
gradientTransform="matrix(0.20949,-0.20274,0.20949,0.20274,129.28,-31.999)"
gradientUnits="userSpaceOnUse"
id="linearGradient6083"
xlink:href="#l-7"
inkscape:collect="always" />
<linearGradient
id="l-7"
y2="134.25"
gradientUnits="userSpaceOnUse"
x2="-158.75"
gradientTransform="matrix(0.20949,-0.20274,0.20949,0.20274,129.28,-31.999)"
y1="115.94"
x1="-158.75">
<stop
stop-color="#ddd"
offset="0"
id="stop27" />
<stop
stop-color="#fff"
offset=".34468"
id="stop29" />
<stop
stop-color="#737373"
offset=".72695"
id="stop31-4" />
<stop
stop-color="#bbb"
offset="1"
id="stop33-0" />
</linearGradient>
</defs>
<rect
height="48"
width="48"
y="-64.449997"
x="-50.849998"
id="rect95"
style="opacity:0" />
<path
d="m 5.7311015,9.4059783 c 0,0.2181084 0.1394995,0.3891786 0.3173568,0.3891786 h 7.6555727 c 0.177857,0 0.317358,-0.1710702 0.317358,-0.3891786 V 1.5427882 c 0,-0.2181091 -0.139501,-0.3891784 -0.317358,-0.3891784 H 8.5292163 c -0.2884891,0 -0.8910636,0.1237663 -1.2759287,0.5956945 L 6.2161606,3.0205356 C 5.8315529,3.4924694 5.7306224,4.2314196 5.7306224,4.5851785 v 4.8210291 z"
id="path97"
inkscape:connector-curvature="0"
style="opacity:0.68015998;fill:url(#v)" />
<path
d="m 5.8347112,9.4059783 c 0,0.1482164 0.092868,0.2620982 0.2137317,0.2620982 h 7.6555741 c 0.120865,0 0.213731,-0.1138818 0.213731,-0.2620982 V 1.5427882 c 0,-0.1482173 -0.09286,-0.262099 -0.213731,-0.262099 H 8.529201 c -0.2650831,0 -0.8508769,0.1221125 -1.2046748,0.5559925 L 6.2879146,3.1079128 C 5.9339621,3.5417326 5.8343712,4.260093 5.8343712,4.5851566 v 4.8210292 z"
id="path99"
inkscape:connector-curvature="0"
style="fill:none;stroke:url(#s);stroke-width:0.2295121" />
<path
d="m 23,9 0.04082,112 h 61.131 c 0.53,0 1.039,-0.211 1.414,-0.586 l 32.824,-32.824 c 0.38,-0.375 0.59,-0.884 0.59,-1.414 V 9.016 h -96 z"
transform="matrix(0,-0.2662987,0.22165967,0,-1.6902875,31.992085)"
id="path101"
inkscape:connector-curvature="0"
style="opacity:0.7;fill:#000000;fill-opacity:1;filter:url(#n)" />
<path
d="M 1.5812474,22.668265 H 24.675438 V 8.9311466 c 0,-0.1190174 -0.04352,-0.2333188 -0.120832,-0.3175342 L 17.785867,1.2416023 C 17.70847,1.1576052 17.603382,1.1102357 17.494203,1.1102357 H 1.5813858 V 22.668381 z"
id="path103"
inkscape:connector-curvature="0"
style="fill:url(#u)" />
<path
d="m 1.5620727,24.670276 c 0,0.139336 0.094258,0.252887 0.2099358,0.252887 H 24.4453 c 0.11589,0 0.209935,-0.113551 0.209935,-0.252887 V 9.7065431 c 0,-0.066509 -0.02224,-0.1317571 -0.06151,-0.1787888 l -6.89155,-8.3019261 c -0.03934,-0.047436 -0.09356,-0.074212 -0.148834,-0.074212 H 1.7721307 c -0.1156762,0 -0.2099358,0.1132939 -0.2099358,0.2528881 V 24.670163 z"
id="path105"
inkscape:connector-curvature="0"
style="fill:url(#t)" />
<g
transform="matrix(1.9949084,0,0,1.8969299,-12.850318,12.075556)"
id="g3116">
<g
id="g80"
transform="matrix(-0.01590305,0.31722884,-0.28308523,-0.01135621,24.312087,-35.376634)">
<g
id="g82"
transform="matrix(1.1072,0,0,1.0714,74.214,8.4286)">
<path
inkscape:connector-curvature="0"
style="fill:url(#linearGradient3123);fill-rule:evenodd;stroke:url(#linearGradient3125);stroke-linejoin:round"
id="path84-1"
d="m 25.892,30.185 19,-19 c 2.175,0.35996 3.0847,1.7322 3.5,3.5 l -19,19 -4.6161,0.7045 1.1161,-4.2045 z" />
<path
style="opacity:0.28235001;fill:none;stroke:#ffffff"
inkscape:connector-curvature="0"
id="path86"
d="M 26.792,30.685 45.29,12.287 c 1.0897,0.17844 1.5173,0.98794 2,2 l -18.398,18.498 -3.3,0.9 1.2,-3 z" />
<path
inkscape:connector-curvature="0"
style="fill:url(#linearGradient3127);fill-rule:evenodd"
id="path88"
d="m 24.55,34.633 1.6663,-4.1803 c 0,0 1.1995,0.24536 1.9322,0.97509 0.73264,0.72973 0.99839,1.9438 0.99839,1.9438 l -4.5969,1.2614 z" />
<path
style="fill:none;stroke:#e9b96e;stroke-linecap:round;stroke-linejoin:round"
inkscape:connector-curvature="0"
id="path90"
transform="translate(6.3922,12.185)"
d="m 23,21.5 -5.5,1.5 2,-5" />
<path
style="fill-rule:evenodd"
inkscape:connector-curvature="0"
id="path92"
d="m 23.955,33.685 -0.90625,2.25 2.3438,-0.65625 c 0.002,-0.03184 0,-0.06141 0,-0.09375 0,-0.80212 -0.64531,-1.4598 -1.4375,-1.5 z" />
</g>
<path
inkscape:connector-curvature="0"
id="path94"
d="m 121.62,22.515 c 2.0307,-0.53628 4.3014,1.7694 3.8196,3.6963 l 2.4306,-2.3522 c 1.1808,-2.6427 -1.2536,-4.7247 -3.8692,-3.7443 l -2.381,2.4002 z"
style="fill:url(#radialGradient3129);stroke:#ef2929;stroke-width:1.0891;enable-background:new" />
<path
inkscape:connector-curvature="0"
id="path96"
d="m 119.12,24.769 c 2.144,-0.56623 4.5413,1.8683 4.0326,3.9028 l 2.5662,-2.4836 c 0.8353,-1.7098 -2.2637,-4.6473 -4.085,-3.9535 l -2.52,2.535 z"
style="fill:url(#linearGradient6083);stroke:#888a85;stroke-width:1.0891;enable-background:new" />
</g>
<path
inkscape:connector-curvature="0"
id="path82"
transform="matrix(0.61624,0,0,0.61624,5.7296,-4.1188)"
d="M 12,5.5 9.4826,4.1505 6.9438,5.4592 7.4494,2.648 5.4202,0.6379 8.25,0.25 9.5347,-2.301 10.778,0.2704 13.601,0.70392 11.54,2.68102 z"
style="fill:#ebeb00" />
</g>
<path
d="m 8.8893243,24.768584 v -7.00828 H 24.643157"
id="path107"
inkscape:connector-curvature="0"
style="fill:none;stroke:#723137;stroke-width:1.21292329;stroke-opacity:1" />
<path
d="M 23.303472,20.907878 H 20.154997"
id="path109"
inkscape:connector-curvature="0"
style="fill:none;stroke:#6e2716;stroke-width:1.45951974px;stroke-opacity:1" />
<path
d="M 17.114466,20.966273 H 11.274947"
id="path111"
inkscape:connector-curvature="0"
style="fill:none;stroke:#632716;stroke-width:1.61190331px;stroke-opacity:1" />
<path
d="M 24.683227,23.990214 H 20.235589"
id="path113"
inkscape:connector-curvature="0"
style="fill:none;stroke:#822716;stroke-width:1.47296751px;stroke-opacity:1" />
<path
d="M 18.660247,24.039958 H 11.218576"
id="path115"
inkscape:connector-curvature="0"
style="fill:none;stroke:#685b00;stroke-width:1.41399999999999990;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
<g
transform="matrix(0,-0.25415314,0.20725537,0,-0.1950509,29.653459)"
id="g117">
<path
d="M 111.41,86.586 C 111.66,86.336 93.035,93 88,93 c -1.654,0 -3,1.346 -3,3 0,5.035 -6.664,23.664 -6.414,23.414 l 32.828,-32.828 z"
id="path119"
inkscape:connector-curvature="0"
style="opacity:0.1;fill:url(#o)" />
<path
d="M 111.41,86.586 C 111.79,86.211 97.444,94 88,94 c -1.103,0 -2,0.897 -2,2 0,9.444 -7.789,23.789 -7.414,23.414 l 32.828,-32.828 z"
id="path121"
inkscape:connector-curvature="0"
style="opacity:0.1;fill:url(#p)" />
<path
d="M 111.41,86.586 C 111.65,86.347 97.807,95 88,95 c -0.553,0 -1,0.447 -1,1 0,9.807 -8.653,23.653 -8.414,23.414 l 32.828,-32.828 z"
id="path123"
inkscape:connector-curvature="0"
style="opacity:0.1;fill:url(#q)" />
<path
d="m 78.586,119.41 c 0,0 11.914,-9.914 17.414,-15.414 5.5,-5.5 15.414,-17.414 15.414,-17.414 0,0 -13.164,9.414 -23.414,9.414 0,10.25 -9.414,23.414 -9.414,23.414 z"
id="path125"
inkscape:connector-curvature="0"
style="fill:url(#r)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,411 @@
<?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.0"
id="svg2"
inkscape:version="0.48.2 r9819"
sodipodi:docname="pagelayout_new.svg">
<metadata
id="metadata133">
<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="1280"
inkscape:window-height="977"
id="namedview131"
showgrid="true"
inkscape:snap-to-guides="false"
inkscape:snap-grids="false"
inkscape:zoom="13.333333"
inkscape:cx="7.6914467"
inkscape:cy="6.5192721"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
inkscape:current-layer="svg2">
<inkscape:grid
type="xygrid"
id="grid3110"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<defs
id="defs4">
<filter
id="n"
color-interpolation-filters="sRGB">
<feGaussianBlur
stdDeviation="1.0394514"
id="feGaussianBlur7" />
</filter>
<marker
id="l"
refY="0"
refX="0"
overflow="visible"
orient="auto"
style="overflow:visible">
<path
d="M 5.77,0 -2.88,5 V -5 l 8.65,5 z"
transform="scale(-0.4,-0.4)"
id="path10"
inkscape:connector-curvature="0"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" />
</marker>
<marker
id="m"
refY="0"
refX="0"
overflow="visible"
orient="auto"
style="overflow:visible">
<path
d="M 5.77,0 -2.88,5 V -5 l 8.65,5 z"
transform="scale(0.4,0.4)"
id="path13"
inkscape:connector-curvature="0"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" />
</marker>
<linearGradient
id="o"
y2="94.537003"
gradientUnits="userSpaceOnUse"
x2="86.536003"
y1="102.34"
x1="94.344002">
<stop
stop-color="#fff"
offset="0"
id="stop16" />
<stop
stop-color="#555753"
offset="1"
id="stop18" />
</linearGradient>
<linearGradient
id="p"
y2="94.586998"
gradientUnits="userSpaceOnUse"
x2="86.586998"
y1="103"
x1="95">
<stop
stop-color="#fff"
offset="0"
id="stop21" />
<stop
stop-color="#555753"
offset="1"
id="stop23" />
</linearGradient>
<linearGradient
id="q"
y2="95.292999"
gradientUnits="userSpaceOnUse"
x2="87.292999"
y1="103"
x1="95">
<stop
stop-color="#fff"
offset="0"
id="stop26" />
<stop
stop-color="#393b38"
offset="1"
id="stop28" />
</linearGradient>
<linearGradient
id="r"
y2="96"
gradientUnits="userSpaceOnUse"
x2="88"
y1="104"
x1="96">
<stop
stop-color="#888a85"
offset="0"
id="stop31" />
<stop
stop-color="#8c8e89"
offset=".0072"
id="stop33" />
<stop
stop-color="#abaca9"
offset=".0673"
id="stop35" />
<stop
stop-color="#c5c6c4"
offset=".1347"
id="stop37" />
<stop
stop-color="#dbdbda"
offset=".2115"
id="stop39" />
<stop
stop-color="#ebebeb"
offset=".3012"
id="stop41" />
<stop
stop-color="#f7f7f6"
offset=".4122"
id="stop43" />
<stop
stop-color="#fdfdfd"
offset=".5679"
id="stop45" />
<stop
stop-color="#fff"
offset="1"
id="stop47" />
</linearGradient>
<radialGradient
id="t"
gradientUnits="userSpaceOnUse"
cy="112.3"
cx="102"
gradientTransform="matrix(0,-0.25288808,0.20993589,0,-0.32737717,29.222083)"
r="139.56">
<stop
stop-color="#535557"
offset="0"
id="stop50" />
<stop
stop-color="#898a8c"
offset=".11366"
id="stop52" />
<stop
stop-color="#ececec"
offset=".20297"
id="stop54" />
<stop
stop-color="#fafafa"
offset=".23630"
id="stop56" />
<stop
stop-color="#fff"
offset=".27220"
id="stop58" />
<stop
stop-color="#fafafa"
offset=".53130"
id="stop60" />
<stop
stop-color="#ebecec"
offset=".84490"
id="stop62" />
<stop
stop-color="#e1e2e3"
offset="1"
id="stop64" />
</radialGradient>
<radialGradient
id="u"
gradientUnits="userSpaceOnUse"
cy="112.3"
cx="102"
gradientTransform="matrix(0,-0.22456181,0.20619923,0,-0.06831569,26.261372)"
r="139.56">
<stop
stop-color="#00537d"
offset="0"
id="stop67" />
<stop
stop-color="#186389"
offset=".0151"
id="stop69" />
<stop
stop-color="#558ca8"
offset=".0558"
id="stop71" />
<stop
stop-color="#89afc3"
offset=".0964"
id="stop73" />
<stop
stop-color="#b3ccd8"
offset=".1357"
id="stop75" />
<stop
stop-color="#d4e2e9"
offset=".1737"
id="stop77" />
<stop
stop-color="#ecf2f5"
offset=".20990"
id="stop79" />
<stop
stop-color="#fafcfd"
offset=".24350"
id="stop81" />
<stop
stop-color="#fff"
offset=".27220"
id="stop83" />
</radialGradient>
<linearGradient
id="s"
y2="9.6875"
gradientUnits="userSpaceOnUse"
x2="-24.75"
gradientTransform="matrix(0,-0.25415316,0.20725536,0,4.9020693,-3.6748783)"
y1="11.566"
x1="-26.754">
<stop
stop-color="#fff"
offset="0"
id="stop86" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop88" />
</linearGradient>
<radialGradient
id="v"
gradientUnits="userSpaceOnUse"
cy="5.3000002"
cx="4"
gradientTransform="matrix(0,-0.47934299,0.24383045,0,4.0242988,12.475354)"
r="17">
<stop
stop-color="#fff"
offset="0"
id="stop91" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop93" />
</radialGradient>
</defs>
<rect
height="48"
width="48"
y="-64.449997"
x="-50.849998"
id="rect95"
style="opacity:0" />
<path
d="m 5.7311015,9.4059783 c 0,0.2181084 0.1394995,0.3891786 0.3173568,0.3891786 h 7.6555727 c 0.177857,0 0.317358,-0.1710702 0.317358,-0.3891786 V 1.5427882 c 0,-0.2181091 -0.139501,-0.3891784 -0.317358,-0.3891784 H 8.5292163 c -0.2884891,0 -0.8910636,0.1237663 -1.2759287,0.5956945 L 6.2161606,3.0205356 C 5.8315529,3.4924694 5.7306224,4.2314196 5.7306224,4.5851785 v 4.8210291 z"
id="path97"
inkscape:connector-curvature="0"
style="opacity:0.68015998;fill:url(#v)" />
<path
d="m 5.8347112,9.4059783 c 0,0.1482164 0.092868,0.2620982 0.2137317,0.2620982 h 7.6555741 c 0.120865,0 0.213731,-0.1138818 0.213731,-0.2620982 V 1.5427882 c 0,-0.1482173 -0.09286,-0.262099 -0.213731,-0.262099 H 8.529201 c -0.2650831,0 -0.8508769,0.1221125 -1.2046748,0.5559925 L 6.2879146,3.1079128 C 5.9339621,3.5417326 5.8343712,4.260093 5.8343712,4.5851566 v 4.8210292 z"
id="path99"
inkscape:connector-curvature="0"
style="fill:none;stroke:url(#s);stroke-width:0.2295121" />
<path
d="m 23,9 0.04082,112 h 61.131 c 0.53,0 1.039,-0.211 1.414,-0.586 l 32.824,-32.824 c 0.38,-0.375 0.59,-0.884 0.59,-1.414 V 9.016 h -96 z"
transform="matrix(0,-0.2662987,0.22165967,0,-1.6902875,31.992085)"
id="path101"
inkscape:connector-curvature="0"
style="opacity:0.7;fill:#000000;fill-opacity:1;filter:url(#n)" />
<path
d="M 1.5812474,22.668265 H 24.675438 V 8.9311466 c 0,-0.1190174 -0.04352,-0.2333188 -0.120832,-0.3175342 L 17.785867,1.2416023 C 17.70847,1.1576052 17.603382,1.1102357 17.494203,1.1102357 H 1.5813858 V 22.668381 z"
id="path103"
inkscape:connector-curvature="0"
style="fill:url(#u)" />
<path
d="m 1.5620727,24.670276 c 0,0.139336 0.094258,0.252887 0.2099358,0.252887 H 24.4453 c 0.11589,0 0.209935,-0.113551 0.209935,-0.252887 V 9.7065431 c 0,-0.066509 -0.02224,-0.1317571 -0.06151,-0.1787888 l -6.89155,-8.3019261 c -0.03934,-0.047436 -0.09356,-0.074212 -0.148834,-0.074212 H 1.7721307 c -0.1156762,0 -0.2099358,0.1132939 -0.2099358,0.2528881 V 24.670163 z"
id="path105"
inkscape:connector-curvature="0"
style="fill:url(#t)" />
<path
d="m 8.8893243,24.768584 v -7.00828 H 24.643157"
id="path107"
inkscape:connector-curvature="0"
style="fill:none;stroke:#723137;stroke-width:1.21292329;stroke-opacity:1" />
<path
d="M 23.303472,20.907878 H 20.154997"
id="path109"
inkscape:connector-curvature="0"
style="fill:none;stroke:#6e2716;stroke-width:1.45951974px;stroke-opacity:1" />
<path
d="M 17.114466,20.966273 H 11.274947"
id="path111"
inkscape:connector-curvature="0"
style="fill:none;stroke:#632716;stroke-width:1.61190331px;stroke-opacity:1" />
<path
d="M 24.683227,23.990214 H 20.235589"
id="path113"
inkscape:connector-curvature="0"
style="fill:none;stroke:#822716;stroke-width:1.47296751px;stroke-opacity:1" />
<path
d="M 18.660247,24.039958 H 11.218576"
id="path115"
inkscape:connector-curvature="0"
style="fill:none;stroke:#685b00;stroke-width:1.41399999999999990;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
<g
transform="matrix(0,-0.25415314,0.20725537,0,-0.1950509,29.653459)"
id="g117">
<path
d="M 111.41,86.586 C 111.66,86.336 93.035,93 88,93 c -1.654,0 -3,1.346 -3,3 0,5.035 -6.664,23.664 -6.414,23.414 l 32.828,-32.828 z"
id="path119"
inkscape:connector-curvature="0"
style="opacity:0.1;fill:url(#o)" />
<path
d="M 111.41,86.586 C 111.79,86.211 97.444,94 88,94 c -1.103,0 -2,0.897 -2,2 0,9.444 -7.789,23.789 -7.414,23.414 l 32.828,-32.828 z"
id="path121"
inkscape:connector-curvature="0"
style="opacity:0.1;fill:url(#p)" />
<path
d="M 111.41,86.586 C 111.65,86.347 97.807,95 88,95 c -0.553,0 -1,0.447 -1,1 0,9.807 -8.653,23.653 -8.414,23.414 l 32.828,-32.828 z"
id="path123"
inkscape:connector-curvature="0"
style="opacity:0.1;fill:url(#q)" />
<path
d="m 78.586,119.41 c 0,0 11.914,-9.914 17.414,-15.414 5.5,-5.5 15.414,-17.414 15.414,-17.414 0,0 -13.164,9.414 -23.414,9.414 0,10.25 -9.414,23.414 -9.414,23.414 z"
id="path125"
inkscape:connector-curvature="0"
style="fill:url(#r)" />
</g>
<g
transform="matrix(2.7131836,0,0,2.7245364,-20.984313,18.373877)"
id="g78">
<path
style="fill:#afaf00"
d="M 12,5.5 9.4826,4.1505 6.9438,5.4592 7.4494,2.648 5.4202,0.6379 8.25,0.25 9.5347,-2.301 10.778,0.2704 13.601,0.70392 11.54,2.68102 z"
transform="matrix(0.86499,0,0,0.86499,3.3638,-4.5167)"
id="path80"
inkscape:connector-curvature="0" />
<path
style="fill:#ebeb00"
d="M 12,5.5 9.4826,4.1505 6.9438,5.4592 7.4494,2.648 5.4202,0.6379 8.25,0.25 9.5347,-2.301 10.778,0.2704 13.601,0.70392 11.54,2.68102 z"
transform="matrix(0.61624,0,0,0.61624,5.7296,-4.1188)"
id="path82"
inkscape:connector-curvature="0" />
<path
style="fill:#ffff00"
d="M 12,5.5 9.4826,4.1505 6.9438,5.4592 7.4494,2.648 5.4202,0.6379 8.25,0.25 9.5347,-2.301 10.778,0.2704 13.601,0.70392 11.54,2.68102 z"
transform="matrix(0.3815,0,0,0.3815,7.9622,-3.7434)"
id="path84"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,414 @@
<?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.0"
id="svg2"
inkscape:version="0.48.2 r9819"
sodipodi:docname="pagelayout_normal_viewload.svg">
<metadata
id="metadata133">
<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="1280"
inkscape:window-height="977"
id="namedview131"
showgrid="true"
inkscape:snap-to-guides="false"
inkscape:snap-grids="false"
inkscape:zoom="13.333333"
inkscape:cx="7.6914467"
inkscape:cy="6.5192721"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
inkscape:current-layer="svg2">
<inkscape:grid
type="xygrid"
id="grid3110"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<defs
id="defs4">
<filter
id="n"
color-interpolation-filters="sRGB">
<feGaussianBlur
stdDeviation="1.0394514"
id="feGaussianBlur7" />
</filter>
<marker
id="l"
refY="0"
refX="0"
overflow="visible"
orient="auto"
style="overflow:visible">
<path
d="M 5.77,0 -2.88,5 V -5 l 8.65,5 z"
transform="scale(-0.4,-0.4)"
id="path10"
inkscape:connector-curvature="0"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" />
</marker>
<marker
id="m"
refY="0"
refX="0"
overflow="visible"
orient="auto"
style="overflow:visible">
<path
d="M 5.77,0 -2.88,5 V -5 l 8.65,5 z"
transform="scale(0.4,0.4)"
id="path13"
inkscape:connector-curvature="0"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" />
</marker>
<linearGradient
id="o"
y2="94.537003"
gradientUnits="userSpaceOnUse"
x2="86.536003"
y1="102.34"
x1="94.344002">
<stop
stop-color="#fff"
offset="0"
id="stop16" />
<stop
stop-color="#555753"
offset="1"
id="stop18" />
</linearGradient>
<linearGradient
id="p"
y2="94.586998"
gradientUnits="userSpaceOnUse"
x2="86.586998"
y1="103"
x1="95">
<stop
stop-color="#fff"
offset="0"
id="stop21" />
<stop
stop-color="#555753"
offset="1"
id="stop23" />
</linearGradient>
<linearGradient
id="q"
y2="95.292999"
gradientUnits="userSpaceOnUse"
x2="87.292999"
y1="103"
x1="95">
<stop
stop-color="#fff"
offset="0"
id="stop26" />
<stop
stop-color="#393b38"
offset="1"
id="stop28" />
</linearGradient>
<linearGradient
id="r"
y2="96"
gradientUnits="userSpaceOnUse"
x2="88"
y1="104"
x1="96">
<stop
stop-color="#888a85"
offset="0"
id="stop31" />
<stop
stop-color="#8c8e89"
offset=".0072"
id="stop33" />
<stop
stop-color="#abaca9"
offset=".0673"
id="stop35" />
<stop
stop-color="#c5c6c4"
offset=".1347"
id="stop37" />
<stop
stop-color="#dbdbda"
offset=".2115"
id="stop39" />
<stop
stop-color="#ebebeb"
offset=".3012"
id="stop41" />
<stop
stop-color="#f7f7f6"
offset=".4122"
id="stop43" />
<stop
stop-color="#fdfdfd"
offset=".5679"
id="stop45" />
<stop
stop-color="#fff"
offset="1"
id="stop47" />
</linearGradient>
<radialGradient
id="t"
gradientUnits="userSpaceOnUse"
cy="112.3"
cx="102"
gradientTransform="matrix(0,-0.25288808,0.20993589,0,-0.32737717,29.222083)"
r="139.56">
<stop
stop-color="#535557"
offset="0"
id="stop50" />
<stop
stop-color="#898a8c"
offset=".11366"
id="stop52" />
<stop
stop-color="#ececec"
offset=".20297"
id="stop54" />
<stop
stop-color="#fafafa"
offset=".23630"
id="stop56" />
<stop
stop-color="#fff"
offset=".27220"
id="stop58" />
<stop
stop-color="#fafafa"
offset=".53130"
id="stop60" />
<stop
stop-color="#ebecec"
offset=".84490"
id="stop62" />
<stop
stop-color="#e1e2e3"
offset="1"
id="stop64" />
</radialGradient>
<radialGradient
id="u"
gradientUnits="userSpaceOnUse"
cy="112.3"
cx="102"
gradientTransform="matrix(0,-0.22456181,0.20619923,0,-0.06831569,26.261372)"
r="139.56">
<stop
stop-color="#00537d"
offset="0"
id="stop67" />
<stop
stop-color="#186389"
offset=".0151"
id="stop69" />
<stop
stop-color="#558ca8"
offset=".0558"
id="stop71" />
<stop
stop-color="#89afc3"
offset=".0964"
id="stop73" />
<stop
stop-color="#b3ccd8"
offset=".1357"
id="stop75" />
<stop
stop-color="#d4e2e9"
offset=".1737"
id="stop77" />
<stop
stop-color="#ecf2f5"
offset=".20990"
id="stop79" />
<stop
stop-color="#fafcfd"
offset=".24350"
id="stop81" />
<stop
stop-color="#fff"
offset=".27220"
id="stop83" />
</radialGradient>
<linearGradient
id="s"
y2="9.6875"
gradientUnits="userSpaceOnUse"
x2="-24.75"
gradientTransform="matrix(0,-0.25415316,0.20725536,0,4.9020693,-3.6748783)"
y1="11.566"
x1="-26.754">
<stop
stop-color="#fff"
offset="0"
id="stop86" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop88" />
</linearGradient>
<radialGradient
id="v"
gradientUnits="userSpaceOnUse"
cy="5.3000002"
cx="4"
gradientTransform="matrix(0,-0.47934299,0.24383045,0,4.0242988,12.475354)"
r="17">
<stop
stop-color="#fff"
offset="0"
id="stop91" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop93" />
</radialGradient>
</defs>
<rect
height="48"
width="48"
y="-64.449997"
x="-50.849998"
id="rect95"
style="opacity:0" />
<path
d="m 5.7311015,9.4059783 c 0,0.2181084 0.1394995,0.3891786 0.3173568,0.3891786 h 7.6555727 c 0.177857,0 0.317358,-0.1710702 0.317358,-0.3891786 V 1.5427882 c 0,-0.2181091 -0.139501,-0.3891784 -0.317358,-0.3891784 H 8.5292163 c -0.2884891,0 -0.8910636,0.1237663 -1.2759287,0.5956945 L 6.2161606,3.0205356 C 5.8315529,3.4924694 5.7306224,4.2314196 5.7306224,4.5851785 v 4.8210291 z"
id="path97"
inkscape:connector-curvature="0"
style="opacity:0.68015998;fill:url(#v)" />
<path
d="m 5.8347112,9.4059783 c 0,0.1482164 0.092868,0.2620982 0.2137317,0.2620982 h 7.6555741 c 0.120865,0 0.213731,-0.1138818 0.213731,-0.2620982 V 1.5427882 c 0,-0.1482173 -0.09286,-0.262099 -0.213731,-0.262099 H 8.529201 c -0.2650831,0 -0.8508769,0.1221125 -1.2046748,0.5559925 L 6.2879146,3.1079128 C 5.9339621,3.5417326 5.8343712,4.260093 5.8343712,4.5851566 v 4.8210292 z"
id="path99"
inkscape:connector-curvature="0"
style="fill:none;stroke:url(#s);stroke-width:0.2295121" />
<path
d="m 23,9 0.04082,112 h 61.131 c 0.53,0 1.039,-0.211 1.414,-0.586 l 32.824,-32.824 c 0.38,-0.375 0.59,-0.884 0.59,-1.414 V 9.016 h -96 z"
transform="matrix(0,-0.2662987,0.22165967,0,-1.6902875,31.992085)"
id="path101"
inkscape:connector-curvature="0"
style="opacity:0.7;fill:#000000;fill-opacity:1;filter:url(#n)" />
<path
d="M 1.5812474,22.668265 H 24.675438 V 8.9311466 c 0,-0.1190174 -0.04352,-0.2333188 -0.120832,-0.3175342 L 17.785867,1.2416023 C 17.70847,1.1576052 17.603382,1.1102357 17.494203,1.1102357 H 1.5813858 V 22.668381 z"
id="path103"
inkscape:connector-curvature="0"
style="fill:url(#u)" />
<path
d="m 1.5620727,24.670276 c 0,0.139336 0.094258,0.252887 0.2099358,0.252887 H 24.4453 c 0.11589,0 0.209935,-0.113551 0.209935,-0.252887 V 9.7065431 c 0,-0.066509 -0.02224,-0.1317571 -0.06151,-0.1787888 l -6.89155,-8.3019261 c -0.03934,-0.047436 -0.09356,-0.074212 -0.148834,-0.074212 H 1.7721307 c -0.1156762,0 -0.2099358,0.1132939 -0.2099358,0.2528881 V 24.670163 z"
id="path105"
inkscape:connector-curvature="0"
style="fill:url(#t)" />
<path
d="m 8.8893243,24.768584 v -7.00828 H 24.643157"
id="path107"
inkscape:connector-curvature="0"
style="fill:none;stroke:#723137;stroke-width:1.21292329;stroke-opacity:1" />
<path
d="M 23.303472,20.907878 H 20.154997"
id="path109"
inkscape:connector-curvature="0"
style="fill:none;stroke:#6e2716;stroke-width:1.45951974px;stroke-opacity:1" />
<path
d="M 17.114466,20.966273 H 11.274947"
id="path111"
inkscape:connector-curvature="0"
style="fill:none;stroke:#632716;stroke-width:1.61190331px;stroke-opacity:1" />
<path
d="M 24.683227,23.990214 H 20.235589"
id="path113"
inkscape:connector-curvature="0"
style="fill:none;stroke:#822716;stroke-width:1.47296751px;stroke-opacity:1" />
<path
d="M 18.660247,24.039958 H 11.218576"
id="path115"
inkscape:connector-curvature="0"
style="fill:none;stroke:#685b00;stroke-width:1.41399999999999990;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
<g
transform="matrix(0,-0.25415314,0.20725537,0,-0.1950509,29.653459)"
id="g117">
<path
d="M 111.41,86.586 C 111.66,86.336 93.035,93 88,93 c -1.654,0 -3,1.346 -3,3 0,5.035 -6.664,23.664 -6.414,23.414 l 32.828,-32.828 z"
id="path119"
inkscape:connector-curvature="0"
style="opacity:0.1;fill:url(#o)" />
<path
d="M 111.41,86.586 C 111.79,86.211 97.444,94 88,94 c -1.103,0 -2,0.897 -2,2 0,9.444 -7.789,23.789 -7.414,23.414 l 32.828,-32.828 z"
id="path121"
inkscape:connector-curvature="0"
style="opacity:0.1;fill:url(#p)" />
<path
d="M 111.41,86.586 C 111.65,86.347 97.807,95 88,95 c -0.553,0 -1,0.447 -1,1 0,9.807 -8.653,23.653 -8.414,23.414 l 32.828,-32.828 z"
id="path123"
inkscape:connector-curvature="0"
style="opacity:0.1;fill:url(#q)" />
<path
d="m 78.586,119.41 c 0,0 11.914,-9.914 17.414,-15.414 5.5,-5.5 15.414,-17.414 15.414,-17.414 0,0 -13.164,9.414 -23.414,9.414 0,10.25 -9.414,23.414 -9.414,23.414 z"
id="path125"
inkscape:connector-curvature="0"
style="fill:url(#r)" />
</g>
<g
transform="matrix(0.58781192,0,0,0.61915505,-0.51969366,-10.140459)"
id="g16">
<path
style="fill-rule:evenodd"
inkscape:connector-curvature="0"
d="m 5.8694,32.598 c 0,0 15.515,-20.825 31.114,0.08214 -15.599,19.414 -31.114,-0.082 -31.114,-0.082 z"
id="path18" />
<path
style="fill:#ffffff;fill-rule:evenodd"
inkscape:connector-curvature="0"
d="m 10.452,32.553 c 0,0 10.86,-13.986 21.78,0.05516 -10.92,13.038 -21.78,-0.05516 -21.78,-0.05516 z"
id="path20" />
<path
style="fill:#a39aff"
inkscape:connector-curvature="0"
d="m -6.5,3.5 a 1.75,1.5 0 1 1 -3.5,0 1.75,1.5 0 1 1 3.5,0 z"
transform="matrix(3.5559,0,0,3.9824,50.678,18.388)"
id="path22" />
<path
inkscape:connector-curvature="0"
d="m -6.5,3.5 a 1.75,1.5 0 1 1 -3.5,0 1.75,1.5 0 1 1 3.5,0 z"
transform="matrix(1.778,0,0,1.9912,36.01,25.358)"
id="path24" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,621 @@
<?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.0"
id="svg2"
inkscape:version="0.48.2 r9819"
sodipodi:docname="pagelayout_load.svg">
<metadata
id="metadata133">
<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="1280"
inkscape:window-height="977"
id="namedview131"
showgrid="true"
inkscape:snap-to-guides="false"
inkscape:snap-grids="false"
inkscape:zoom="13.333333"
inkscape:cx="7.6914467"
inkscape:cy="6.5192721"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
inkscape:current-layer="svg2">
<inkscape:grid
type="xygrid"
id="grid3110"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<defs
id="defs4">
<filter
id="n"
color-interpolation-filters="sRGB">
<feGaussianBlur
stdDeviation="1.0394514"
id="feGaussianBlur7" />
</filter>
<marker
id="l"
refY="0"
refX="0"
overflow="visible"
orient="auto"
style="overflow:visible">
<path
d="M 5.77,0 -2.88,5 V -5 l 8.65,5 z"
transform="scale(-0.4,-0.4)"
id="path10"
inkscape:connector-curvature="0"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" />
</marker>
<marker
id="m"
refY="0"
refX="0"
overflow="visible"
orient="auto"
style="overflow:visible">
<path
d="M 5.77,0 -2.88,5 V -5 l 8.65,5 z"
transform="scale(0.4,0.4)"
id="path13"
inkscape:connector-curvature="0"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" />
</marker>
<linearGradient
id="o"
y2="94.537003"
gradientUnits="userSpaceOnUse"
x2="86.536003"
y1="102.34"
x1="94.344002">
<stop
stop-color="#fff"
offset="0"
id="stop16" />
<stop
stop-color="#555753"
offset="1"
id="stop18" />
</linearGradient>
<linearGradient
id="p"
y2="94.586998"
gradientUnits="userSpaceOnUse"
x2="86.586998"
y1="103"
x1="95">
<stop
stop-color="#fff"
offset="0"
id="stop21" />
<stop
stop-color="#555753"
offset="1"
id="stop23" />
</linearGradient>
<linearGradient
id="q"
y2="95.292999"
gradientUnits="userSpaceOnUse"
x2="87.292999"
y1="103"
x1="95">
<stop
stop-color="#fff"
offset="0"
id="stop26" />
<stop
stop-color="#393b38"
offset="1"
id="stop28" />
</linearGradient>
<linearGradient
id="r"
y2="96"
gradientUnits="userSpaceOnUse"
x2="88"
y1="104"
x1="96">
<stop
stop-color="#888a85"
offset="0"
id="stop31" />
<stop
stop-color="#8c8e89"
offset=".0072"
id="stop33" />
<stop
stop-color="#abaca9"
offset=".0673"
id="stop35" />
<stop
stop-color="#c5c6c4"
offset=".1347"
id="stop37" />
<stop
stop-color="#dbdbda"
offset=".2115"
id="stop39" />
<stop
stop-color="#ebebeb"
offset=".3012"
id="stop41" />
<stop
stop-color="#f7f7f6"
offset=".4122"
id="stop43" />
<stop
stop-color="#fdfdfd"
offset=".5679"
id="stop45" />
<stop
stop-color="#fff"
offset="1"
id="stop47" />
</linearGradient>
<radialGradient
id="t"
gradientUnits="userSpaceOnUse"
cy="112.3"
cx="102"
gradientTransform="matrix(0,-0.25288808,0.20993589,0,-0.32737717,29.222083)"
r="139.56">
<stop
stop-color="#535557"
offset="0"
id="stop50" />
<stop
stop-color="#898a8c"
offset=".11366"
id="stop52" />
<stop
stop-color="#ececec"
offset=".20297"
id="stop54" />
<stop
stop-color="#fafafa"
offset=".23630"
id="stop56" />
<stop
stop-color="#fff"
offset=".27220"
id="stop58" />
<stop
stop-color="#fafafa"
offset=".53130"
id="stop60" />
<stop
stop-color="#ebecec"
offset=".84490"
id="stop62" />
<stop
stop-color="#e1e2e3"
offset="1"
id="stop64" />
</radialGradient>
<radialGradient
id="u"
gradientUnits="userSpaceOnUse"
cy="112.3"
cx="102"
gradientTransform="matrix(0,-0.22456181,0.20619923,0,-0.06831569,26.261372)"
r="139.56">
<stop
stop-color="#00537d"
offset="0"
id="stop67" />
<stop
stop-color="#186389"
offset=".0151"
id="stop69" />
<stop
stop-color="#558ca8"
offset=".0558"
id="stop71" />
<stop
stop-color="#89afc3"
offset=".0964"
id="stop73" />
<stop
stop-color="#b3ccd8"
offset=".1357"
id="stop75" />
<stop
stop-color="#d4e2e9"
offset=".1737"
id="stop77" />
<stop
stop-color="#ecf2f5"
offset=".20990"
id="stop79" />
<stop
stop-color="#fafcfd"
offset=".24350"
id="stop81" />
<stop
stop-color="#fff"
offset=".27220"
id="stop83" />
</radialGradient>
<linearGradient
id="s"
y2="9.6875"
gradientUnits="userSpaceOnUse"
x2="-24.75"
gradientTransform="matrix(0,-0.25415316,0.20725536,0,4.9020693,-3.6748783)"
y1="11.566"
x1="-26.754">
<stop
stop-color="#fff"
offset="0"
id="stop86" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop88" />
</linearGradient>
<radialGradient
id="v"
gradientUnits="userSpaceOnUse"
cy="5.3000002"
cx="4"
gradientTransform="matrix(0,-0.47934299,0.24383045,0,4.0242988,12.475354)"
r="17">
<stop
stop-color="#fff"
offset="0"
id="stop91" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop93" />
</radialGradient>
<radialGradient
id="p-1"
gradientUnits="userSpaceOnUse"
cy="27.875"
cx="16"
gradientTransform="matrix(1,0,0,0.28866,0,19.829)"
r="12.125">
<stop
offset="0"
id="stop3375" />
<stop
stop-opacity="0"
offset="1"
id="stop3377" />
</radialGradient>
<radialGradient
id="q-7"
gradientUnits="userSpaceOnUse"
cy="15.491"
cx="10.783"
gradientTransform="matrix(0.40447,0,0,0.42758,4.3012,2.4766)"
r="17.709">
<stop
stop-color="#fff"
offset="0"
id="stop3380" />
<stop
stop-color="#c1c7bc"
offset="1"
id="stop3382" />
</radialGradient>
<radialGradient
id="r-4"
gradientUnits="userSpaceOnUse"
cy="10.499"
cx="10.5"
gradientTransform="matrix(2.1471,4.6915e-7,-4.6925e-7,2.1471,1.4265,-49.569)"
r="10.496">
<stop
stop-color="#f57900"
offset="0"
id="stop3385" />
<stop
stop-color="#fcaf3e"
offset="1"
id="stop3387" />
</radialGradient>
<linearGradient
id="j"
y2="51.027"
gradientUnits="userSpaceOnUse"
x2="26.139999"
y1="20.927"
x1="25.594">
<stop
stop-color="#fff"
offset="0"
id="stop3390" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop3392" />
</linearGradient>
<linearGradient
id="k"
y2="-49.625"
gradientUnits="userSpaceOnUse"
x2="23.732"
y1="-40.465"
x1="25.865999">
<stop
stop-color="#fff"
offset="0"
id="stop3395" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop3397" />
</linearGradient>
<linearGradient
id="l-0"
y2="14.781"
gradientUnits="userSpaceOnUse"
x2="83.625"
y1="15.75"
x1="79.25">
<stop
offset="0"
id="stop3400" />
<stop
stop-opacity="0"
offset="1"
id="stop3402" />
</linearGradient>
<linearGradient
id="m-9"
y2="13.875"
gradientUnits="userSpaceOnUse"
x2="83.219002"
gradientTransform="translate(1,0)"
y1="14.062"
x1="80.625">
<stop
stop-color="#eeeeec"
offset="0"
id="stop3405" />
<stop
stop-color="#eeeeec"
stop-opacity="0"
offset="1"
id="stop3407" />
</linearGradient>
<linearGradient
id="n-4"
y2="12.093"
gradientUnits="userSpaceOnUse"
x2="83.203003"
gradientTransform="translate(1,0)"
y1="12.312"
x1="78.311996">
<stop
stop-color="#555753"
offset="0"
id="stop3410" />
<stop
stop-color="#888a85"
stop-opacity="0"
offset="1"
id="stop3412" />
</linearGradient>
<linearGradient
id="o-8"
y2="16.438"
gradientUnits="userSpaceOnUse"
x2="83.030998"
gradientTransform="translate(1,0)"
y1="16.406"
x1="78.5">
<stop
stop-color="#fff"
offset="0"
id="stop3415" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop3417" />
</linearGradient>
</defs>
<rect
height="48"
width="48"
y="-64.449997"
x="-50.849998"
id="rect95"
style="opacity:0" />
<path
d="m 5.7311015,9.4059783 c 0,0.2181084 0.1394995,0.3891786 0.3173568,0.3891786 h 7.6555727 c 0.177857,0 0.317358,-0.1710702 0.317358,-0.3891786 V 1.5427882 c 0,-0.2181091 -0.139501,-0.3891784 -0.317358,-0.3891784 H 8.5292163 c -0.2884891,0 -0.8910636,0.1237663 -1.2759287,0.5956945 L 6.2161606,3.0205356 C 5.8315529,3.4924694 5.7306224,4.2314196 5.7306224,4.5851785 v 4.8210291 z"
id="path97"
inkscape:connector-curvature="0"
style="opacity:0.68015998;fill:url(#v)" />
<path
d="m 5.8347112,9.4059783 c 0,0.1482164 0.092868,0.2620982 0.2137317,0.2620982 h 7.6555741 c 0.120865,0 0.213731,-0.1138818 0.213731,-0.2620982 V 1.5427882 c 0,-0.1482173 -0.09286,-0.262099 -0.213731,-0.262099 H 8.529201 c -0.2650831,0 -0.8508769,0.1221125 -1.2046748,0.5559925 L 6.2879146,3.1079128 C 5.9339621,3.5417326 5.8343712,4.260093 5.8343712,4.5851566 v 4.8210292 z"
id="path99"
inkscape:connector-curvature="0"
style="fill:none;stroke:url(#s);stroke-width:0.2295121" />
<path
d="m 23,9 0.04082,112 h 61.131 c 0.53,0 1.039,-0.211 1.414,-0.586 l 32.824,-32.824 c 0.38,-0.375 0.59,-0.884 0.59,-1.414 V 9.016 h -96 z"
transform="matrix(0,-0.2662987,0.22165967,0,-1.6902875,31.992085)"
id="path101"
inkscape:connector-curvature="0"
style="opacity:0.7;fill:#000000;fill-opacity:1;filter:url(#n)" />
<path
d="M 1.5812474,22.668265 H 24.675438 V 8.9311466 c 0,-0.1190174 -0.04352,-0.2333188 -0.120832,-0.3175342 L 17.785867,1.2416023 C 17.70847,1.1576052 17.603382,1.1102357 17.494203,1.1102357 H 1.5813858 V 22.668381 z"
id="path103"
inkscape:connector-curvature="0"
style="fill:url(#u)" />
<path
d="m 1.5620727,24.670276 c 0,0.139336 0.094258,0.252887 0.2099358,0.252887 H 24.4453 c 0.11589,0 0.209935,-0.113551 0.209935,-0.252887 V 9.7065431 c 0,-0.066509 -0.02224,-0.1317571 -0.06151,-0.1787888 l -6.89155,-8.3019261 c -0.03934,-0.047436 -0.09356,-0.074212 -0.148834,-0.074212 H 1.7721307 c -0.1156762,0 -0.2099358,0.1132939 -0.2099358,0.2528881 V 24.670163 z"
id="path105"
inkscape:connector-curvature="0"
style="fill:url(#t)" />
<path
d="m 8.8893243,24.768584 v -7.00828 H 24.643157"
id="path107"
inkscape:connector-curvature="0"
style="fill:none;stroke:#723137;stroke-width:1.21292329;stroke-opacity:1" />
<path
d="M 23.303472,20.907878 H 20.154997"
id="path109"
inkscape:connector-curvature="0"
style="fill:none;stroke:#6e2716;stroke-width:1.45951974px;stroke-opacity:1" />
<path
d="M 17.114466,20.966273 H 11.274947"
id="path111"
inkscape:connector-curvature="0"
style="fill:none;stroke:#632716;stroke-width:1.61190331px;stroke-opacity:1" />
<path
d="M 24.683227,23.990214 H 20.235589"
id="path113"
inkscape:connector-curvature="0"
style="fill:none;stroke:#822716;stroke-width:1.47296751px;stroke-opacity:1" />
<path
d="M 18.660247,24.039958 H 11.218576"
id="path115"
inkscape:connector-curvature="0"
style="fill:none;stroke:#685b00;stroke-width:1.41399999999999990;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
<g
transform="matrix(0,-0.25415314,0.20725537,0,-0.1950509,29.653459)"
id="g117">
<path
d="M 111.41,86.586 C 111.66,86.336 93.035,93 88,93 c -1.654,0 -3,1.346 -3,3 0,5.035 -6.664,23.664 -6.414,23.414 l 32.828,-32.828 z"
id="path119"
inkscape:connector-curvature="0"
style="opacity:0.1;fill:url(#o)" />
<path
d="M 111.41,86.586 C 111.79,86.211 97.444,94 88,94 c -1.103,0 -2,0.897 -2,2 0,9.444 -7.789,23.789 -7.414,23.414 l 32.828,-32.828 z"
id="path121"
inkscape:connector-curvature="0"
style="opacity:0.1;fill:url(#p)" />
<path
d="M 111.41,86.586 C 111.65,86.347 97.807,95 88,95 c -0.553,0 -1,0.447 -1,1 0,9.807 -8.653,23.653 -8.414,23.414 l 32.828,-32.828 z"
id="path123"
inkscape:connector-curvature="0"
style="opacity:0.1;fill:url(#q)" />
<path
d="m 78.586,119.41 c 0,0 11.914,-9.914 17.414,-15.414 5.5,-5.5 15.414,-17.414 15.414,-17.414 0,0 -13.164,9.414 -23.414,9.414 0,10.25 -9.414,23.414 -9.414,23.414 z"
id="path125"
inkscape:connector-curvature="0"
style="fill:url(#r)" />
</g>
<g
transform="matrix(0.31955523,0,0,0.31627519,1.4149419,16.898872)"
id="g3419">
<path
inkscape:connector-curvature="0"
style="opacity:0.4;color:#000000;fill:url(#p-1)"
d="m 28.125,27.875 a 12.125,3.5 0 1 1 -24.25,0 12.125,3.5 0 1 1 24.25,0 z"
transform="matrix(1.732,0,0,2,-3.7113,-65.75)"
id="path3421" />
<path
style="fill:url(#q-7);stroke:#babdb6;stroke-width:0.38686001;stroke-linecap:round;stroke-linejoin:round"
inkscape:connector-curvature="0"
d="m 15.092,10.078 a 6.43,7.0998 0 1 1 -12.86,0 6.43,7.0998 0 1 1 12.86,0 z"
transform="matrix(2.7108,0,0,2.4649,0.44798,-51.842)"
id="path3423" />
<path
style="opacity:0.11856001"
inkscape:connector-curvature="0"
d="m 23.969,-44.661 c -9.5044,0 -17.219,7.6827 -17.219,17.188 0,0.38564 0.037527,0.77693 0.0625,1.1562 0.60042,-8.9602 8.0444,-16.031 17.156,-16.031 9.1119,0 16.556,7.0711 17.156,16.031 0.02497,-0.37932 0.0625,-0.77061 0.0625,-1.1562 0,-9.5048 -7.7144,-17.188 -17.219,-17.188 z"
id="path3425" />
<path
style="fill:url(#r-4);stroke:#ce5c00;stroke-linecap:round;stroke-linejoin:round"
inkscape:connector-curvature="0"
d="M 23.166,-48.493 C 11.703,-48.057 2.5,-38.592 2.5,-27.025 c 0,11.846 9.6239,21.468 21.471,21.468 11.8471,0 21.471,-9.6229 21.471,-21.468 0,-11.846 -9.6239,-21.468 -21.471,-21.468 -0.27766,0 -0.53004,-0.01047 -0.80516,0 z m -0.0671,4.2937 c 0.29278,-0.01484 0.57581,0 0.87225,0 9.4863,0 17.177,7.698 17.177,17.175 0,9.4768 -7.6904,17.175 -17.177,17.175 -9.4863,0 -17.177,-7.698 -17.177,-17.175 0,-9.1807 7.2284,-16.715 16.304,-17.175 z"
id="path3427" />
<path
inkscape:connector-curvature="0"
style="opacity:0.51030997;color:#000000;fill:none;stroke:url(#j);stroke-width:0.97099;stroke-linecap:round;stroke-linejoin:round"
d="m 43.375,24.75 a 19.875,19.875 0 1 1 -39.75,0 19.875,19.875 0 1 1 39.75,0 z"
transform="matrix(1.0299,0,0,1.0299,-0.23329,-52.458)"
id="path3429" />
<path
style="fill:#555753;fill-rule:evenodd;stroke:#2e3436;stroke-linecap:round;stroke-linejoin:round"
inkscape:connector-curvature="0"
d="m 23.205,-23.188 12.357,-1.375 -11.2,-1.6748 -1.1568,3.0498 z"
id="path3431" />
<path
style="fill:#555753;fill-rule:evenodd;stroke:#2e3436;stroke-linecap:round;stroke-linejoin:round"
inkscape:connector-curvature="0"
d="m 23.569,-40.703 -1.6232,16.549 3.0751,-1.0879 -1.4519,-15.461 z"
id="path3433" />
<path
inkscape:connector-curvature="0"
style="color:#000000;fill:#555753;fill-rule:evenodd;stroke:#2e3436;stroke-linecap:round;stroke-linejoin:round"
d="m 26.25,25.062 a 2.6875,2.6875 0 1 1 -5.375,0 2.6875,2.6875 0 1 1 5.375,0 z"
transform="translate(0,-50)"
id="path3435" />
<path
inkscape:connector-curvature="0"
style="opacity:0.47423;color:#000000;fill:#ffffff;fill-rule:evenodd"
d="m 23.5,23.656 a 1.25,1.25 0 1 1 -2.5,0 1.25,1.25 0 1 1 2.5,0 z"
transform="matrix(-0.6,0,0,-0.6,36.498,-11.335)"
id="path3437" />
<path
style="opacity:0.5;fill:none;stroke:url(#k);stroke-width:0.60857999;stroke-linecap:round;stroke-linejoin:round;stroke-dashoffset:0.7"
inkscape:connector-curvature="0"
d="m 40.835,-46.712 a 17.103,7.1153 0 1 1 -34.206,0 17.103,7.1153 0 1 1 34.206,0 z"
transform="matrix(1.0598,0,0,2.5476,-1.1523,92)"
id="path3439" />
<g
transform="translate(-62,-52)"
id="g3441">
<path
style="opacity:0.1;fill:url(#l-0);fill-rule:evenodd"
inkscape:connector-curvature="0"
d="m 85,9.9688 c -4.3134,0 -8.1444,1.9886 -10.719,5.0625 l -2.406,-2.406 a 0.5313,0.5313 0 0 0 -0.90625,0.28125 l -2,10.5 a 0.5313,0.5313 0 0 0 0.625,0.625 l 10.5,-2 a 0.5313,0.5313 0 0 0 0.281,-0.906 l -2.5,-2.5 c 1.635,-2.1625 4.2032,-3.5938 7.125,-3.5938 0.06101,0 0.66768,-0.0067 1.25,0 0.58232,0.0067 1.2312,0.0319 1.2188,0.03125 a 0.5313,0.5313 0 0 0 0.5625,-0.53125 v -4 a 0.5313,0.5313 0 0 0 -0.501,-0.531 c -0.283,-0.0105 -2.309,-0.0312 -2.531,-0.0312 z"
transform="translate(1,1)"
id="path3443" />
<path
style="fill:url(#m-9);fill-rule:evenodd;stroke:url(#n-4);stroke-linecap:round;stroke-miterlimit:10;stroke-dashoffset:0.7"
inkscape:connector-curvature="0"
d="m 86,10.5 c -4.3611,0 -8.252,2.0648 -10.719,5.2812 l -2.781,-2.781 -2,10.5 10.5,-2 -2.844,-2.844 c 1.708,-2.505 4.584,-5.156 7.844,-5.156 0.16914,0 2.333,0.02251 2.5,0.03125 v -3 c -0.168,-0.006 -2.331,-0.031 -2.5,-0.031 z"
stroke-miterlimit="10"
id="path3445" />
<path
style="fill:none;stroke:url(#o-8);stroke-linecap:round;stroke-miterlimit:10;stroke-dashoffset:0.7"
inkscape:connector-curvature="0"
d="m 86,11.5 c -4.0454,0 -7.654,1.8975 -9.9375,4.875 -0.17123,0.23202 -0.43428,0.37884 -0.72164,0.40279 -0.288,0.024 -0.571,-0.078 -0.779,-0.278 l -1.437,-1.438 -1.375,7.188 7.1875,-1.375 -1.5,-1.5 c -0.338,-0.348 -0.378,-0.888 -0.094,-1.281 1.886,-2.768 5.058,-5.594 8.656,-5.594 0.12892,0 1.6658,-0.0067 2.25,0 0.11122,0.0013 0.14936,-9.15e-4 0.25,0 v -0.96875 c -0.703,-0.009 -2.457,-0.031 -2.5,-0.031 z"
stroke-miterlimit="10"
id="path3447" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 20 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 46 KiB

View File

@ -32,8 +32,19 @@ else()
set( TITLE_BLOCK_SHAPES title_block_shapes )
endif()
set(COMMON_PAGE_LAYOUT_SRCS
page_layout/${TITLE_BLOCK_SHAPES}.cpp
page_layout/class_worksheet_dataitem.cpp
page_layout/class_worksheet_layout.cpp
page_layout/page_layout_default_description.cpp
page_layout/page_layout_graphic_items.cpp
page_layout/page_layout_reader_keywords.cpp
page_layout/page_layout_reader.cpp
)
set(COMMON_SRCS
${COMMON_ABOUT_DLG_SRCS}
${COMMON_PAGE_LAYOUT_SRCS}
base_struct.cpp
basicframe.cpp
bezier_curves.cpp
@ -76,16 +87,12 @@ set(COMMON_SRCS
msgpanel.cpp
netlist_keywords.cpp
newstroke_font.cpp
page_layout_default_description.cpp
page_layout_reader_keywords.cpp
page_layout_reader.cpp
projet_config.cpp
ptree.cpp
reporter.cpp
richio.cpp
selcolor.cpp
string.cpp
${TITLE_BLOCK_SHAPES}.cpp
trigo.cpp
wildcards_and_files_ext.cpp
worksheet.cpp
@ -197,9 +204,9 @@ make_lexer(
# auto-generate page layout reader s-expression page_layout_reader_lexer.h
# and title_block_reader_keywords.cpp.
make_lexer(
${CMAKE_CURRENT_SOURCE_DIR}/page_layout_reader.keywords
${CMAKE_CURRENT_SOURCE_DIR}/page_layout/page_layout_reader.keywords
${PROJECT_SOURCE_DIR}/include/page_layout_reader_lexer.h
${CMAKE_CURRENT_SOURCE_DIR}/page_layout_reader_keywords.cpp
${CMAKE_CURRENT_SOURCE_DIR}/page_layout/page_layout_reader_keywords.cpp
TB_READER_T
)

View File

@ -36,6 +36,8 @@
#include <id.h>
#include <base_units.h>
wxString BASE_SCREEN::m_PageLayoutDescrFileName; // the name of the page layout descr file.
BASE_SCREEN::BASE_SCREEN( KICAD_T aType ) :
EDA_ITEM( aType )
{

View File

@ -40,7 +40,7 @@
#include <base_units.h>
#if defined( PCBNEW ) || defined( CVPCB ) || defined( EESCHEMA ) || defined( GERBVIEW )
#if defined( PCBNEW ) || defined( CVPCB ) || defined( EESCHEMA ) || defined( GERBVIEW ) || defined( PL_EDITOR )
#define IU_TO_MM( x ) ( x / IU_PER_MM )
#define IU_TO_IN( x ) ( x / IU_PER_MILS / 1000 )
#define MM_TO_IU( x ) ( x * IU_PER_MM )
@ -50,6 +50,42 @@
#endif
// Helper function to print a float number without using scientific notation
// and no trailing 0
// So we cannot always just use the %g or the %f format to print a fp number
// this helper function uses the %f format when needed, or %g when %f is
// not well working and then removes trailing 0
std::string Double2Str( double aValue )
{
char buf[50];
int len;
if( aValue != 0.0 && fabs( aValue ) <= 0.0001 )
{
// For these small values, %f works fine,
// and %g gives an exponent
len = sprintf( buf, "%.16f", aValue );
while( --len > 0 && buf[len] == '0' )
buf[len] = '\0';
if( buf[len] == '.' )
buf[len] = '\0';
else
++len;
}
else
{
// For these values, %g works fine, and sometimes %f
// gives a bad value (try aValue = 1.222222222222, with %.16f format!)
len = sprintf( buf, "%.16g", aValue );
}
return std::string( buf, len );;
}
double To_User_Unit( EDA_UNITS_T aUnit, double aValue )
{
switch( aUnit )

View File

@ -6,11 +6,7 @@
#endif
#ifndef KICAD_BUILD_VERSION
#if defined KICAD_GOST
# define KICAD_BUILD_VERSION "(2013-jun-18 GOST)"
#else
# define KICAD_BUILD_VERSION "(2013-jun-18)"
#endif
# define KICAD_BUILD_VERSION "(2013-jul-14)"
#endif

View File

@ -116,9 +116,6 @@ bool BITMAP_BASE::SaveData( FILE* aFile ) const
if( fprintf( aFile, "%2.2X ", *begin & 0xFF ) == EOF )
return false;
}
if( fprintf( aFile, "$EndBitmap" ) == EOF )
return false;
}
return true;

View File

@ -69,16 +69,6 @@ EDA_UNITS_T g_UserUnit;
EDA_COLOR_T g_GhostColor;
bool IsGOST()
{
#if defined(KICAD_GOST)
return true;
#else
return false;
#endif
}
/**
* The predefined colors used in KiCad.
* Please: if you change a value, remember these values are carefully chosen

View File

@ -92,6 +92,9 @@ void PlotWorkSheet( PLOTTER* plotter, const TITLE_BLOCK& aTitleBlock,
plotter->SetCurrentLineWidth( PLOTTER::DEFAULT_LINE_WIDTH );
WS_DRAW_ITEM_LIST drawList;
// Print only a short filename, if aFilename is the full filename
wxFileName fn( aFilename );
// Prepare plot parameters
drawList.SetMargins( LTmargin, RBmargin);
drawList.SetPenSize(PLOTTER::DEFAULT_LINE_WIDTH );
@ -99,13 +102,12 @@ void PlotWorkSheet( PLOTTER* plotter, const TITLE_BLOCK& aTitleBlock,
drawList.SetPageSize( pageSize );
drawList.SetSheetNumber( aSheetNumber );
drawList.SetSheetCount( aNumberOfSheets );
drawList.SetFileName( fn.GetFullName() ); // Print only the short filename
drawList.SetSheetName( aSheetDesc );
// Print only a short filename, if aFilename is the full filename
wxFileName fn( aFilename );
drawList.BuildWorkSheetGraphicList( aPageInfo.GetType(), fn.GetFullName(),
aSheetDesc, aTitleBlock, plotColor, plotColor );
drawList.BuildWorkSheetGraphicList( aPageInfo,
aTitleBlock, plotColor, plotColor );
// Draw item list
for( WS_DRAW_ITEM_BASE* item = drawList.GetFirst(); item;

View File

@ -1,7 +1,7 @@
/*
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 1992-2010 Kicad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2013 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
@ -28,11 +28,13 @@
#include <fctsys.h>
#include <macros.h> // DIM()
#include <common.h>
#include <confirm.h>
#include <gr_basic.h>
#include <base_struct.h>
#include <class_drawpanel.h>
#include <class_title_block.h>
#include <wxstruct.h>
#include <worksheet_shape_builder.h>
#include <class_base_screen.h>
#include <wx/valgen.h>
@ -72,8 +74,9 @@ static const wxString pageFmts[] =
void EDA_DRAW_FRAME::Process_PageSettings( wxCommandEvent& event )
{
DIALOG_PAGES_SETTINGS frame( this );
int diag = frame.ShowModal();
DIALOG_PAGES_SETTINGS dlg( this );
dlg.SetWksFileName( BASE_SCREEN::m_PageLayoutDescrFileName );
int diag = dlg.ShowModal();
if( m_canvas && diag )
m_canvas->Refresh();
@ -84,12 +87,12 @@ DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS( EDA_DRAW_FRAME* parent ) :
DIALOG_PAGES_SETTINGS_BASE( parent ),
m_initialized( false )
{
m_Parent = parent;
m_Screen = m_Parent->GetScreen();
m_modified = false;
m_parent = parent;
m_screen = m_parent->GetScreen();
m_page_bitmap = NULL;
m_tb = m_Parent->GetTitleBlock();
m_tb = m_parent->GetTitleBlock();
m_customFmt = false;
m_localPrjConfigChanged = false;
initDialog();
@ -121,22 +124,26 @@ void DIALOG_PAGES_SETTINGS::initDialog()
m_paperSizeComboBox->Append( wxGetTranslation( pageFmts[ii] ) );
}
// initialize the page layout descr filename
m_plDescrFileName = BASE_SCREEN::m_PageLayoutDescrFileName;
m_filePicker->SetPath( m_plDescrFileName );
#ifdef EESCHEMA
// Init display value for schematic sub-sheet number
wxString format = m_TextSheetCount->GetLabel();
msg.Printf( format, m_Screen->m_NumberOfScreens );
msg.Printf( format, m_screen->m_NumberOfScreens );
m_TextSheetCount->SetLabel( msg );
format = m_TextSheetNumber->GetLabel();
msg.Printf( format, m_Screen->m_ScreenNumber );
msg.Printf( format, m_screen->m_ScreenNumber );
m_TextSheetNumber->SetLabel( msg );
#else
m_TextSheetCount->Show( false );
m_TextSheetNumber->Show( false );
#endif
m_pageInfo = m_Parent->GetPageSettings();
m_pageInfo = m_parent->GetPageSettings();
SetCurrentPageSizeSelection( m_pageInfo.GetType() );
m_orientationComboBox->SetSelection( m_pageInfo.IsPortrait() );
@ -210,28 +217,24 @@ void DIALOG_PAGES_SETTINGS::initDialog()
}
void DIALOG_PAGES_SETTINGS::OnCloseWindow( wxCloseEvent& event )
{
EndModal( m_modified );
}
void DIALOG_PAGES_SETTINGS::OnOkClick( wxCommandEvent& event )
{
m_save_flag = false;
SavePageSettings( event );
if( m_save_flag )
if( SavePageSettings() )
{
m_modified = true;
Close( true );
m_screen->SetModify();
m_parent->GetCanvas()->Refresh();
if( m_localPrjConfigChanged )
m_parent->SaveProjectSettings( true );
EndModal( true );
}
}
void DIALOG_PAGES_SETTINGS::OnCancelClick( wxCommandEvent& event )
{
Close( true );
EndModal( false );
}
@ -393,11 +396,50 @@ void DIALOG_PAGES_SETTINGS::OnDateApplyClick( wxCommandEvent& event )
m_TextDate->SetValue( FormatDateLong( m_PickDate->GetValue() ) );
}
void DIALOG_PAGES_SETTINGS::SavePageSettings( wxCommandEvent& event )
bool DIALOG_PAGES_SETTINGS::SavePageSettings()
{
bool retSuccess = false;
m_save_flag = true;
m_plDescrFileName = m_filePicker->GetPath();
if( m_plDescrFileName != BASE_SCREEN::m_PageLayoutDescrFileName )
{
if( !m_plDescrFileName.IsEmpty() )
{
wxString fullFileName = WORKSHEET_LAYOUT::MakeFullFileName( m_plDescrFileName );
if( !wxFileExists( fullFileName ) )
{
wxString msg;
msg.Printf( _("Page layout description file <%s> not found. Abort"),
GetChars( fullFileName ) );
wxMessageBox( msg );
return false;
}
}
// Try to remove the path, if the path is the current working dir,
// or the dir of kicad.pro (template)
wxString shortFileName = WORKSHEET_LAYOUT::MakeShortFileName( m_plDescrFileName );
wxFileName fn = shortFileName;
// For Win/Linux/macOS compatibility, a relative path is a good idea
if( fn.IsAbsolute() )
{
fn.MakeRelativeTo( wxGetCwd() );
wxString msg;
msg.Printf( _( "The page layout descr filename has changed\n"
"Do you want to use the relative path:\n%s"),
fn.GetFullPath().GetData() );
if( IsOK( this, msg ) )
shortFileName = fn.GetFullPath();
}
BASE_SCREEN::m_PageLayoutDescrFileName = shortFileName;
WORKSHEET_LAYOUT& pglayout = WORKSHEET_LAYOUT::GetTheInstance();
pglayout.SetPageLayout( shortFileName );
m_localPrjConfigChanged = true;
}
int idx = m_paperSizeComboBox->GetSelection();
@ -425,8 +467,7 @@ limits\n%.1f - %.1f %s!\nSelect another custom paper size?" ),
if( wxMessageBox( msg, _( "Warning!" ), wxYES_NO | wxICON_EXCLAMATION, this ) == wxYES )
{
m_save_flag = false;
return;
return false;
}
m_layout_size.x = Clamp( MIN_PAGE_SIZE, m_layout_size.x, MAX_PAGE_SIZE );
@ -485,7 +526,7 @@ limits\n%.1f - %.1f %s!\nSelect another custom paper size?" ),
m_pageInfo.SetType( PAGE_INFO::A4 );
}
m_Parent->SetPageSettings( m_pageInfo );
m_parent->SetPageSettings( m_pageInfo );
m_tb.SetRevision( m_TextRevision->GetValue() );
m_tb.SetDate( m_TextDate->GetValue() );
@ -496,7 +537,8 @@ limits\n%.1f - %.1f %s!\nSelect another custom paper size?" ),
m_tb.SetComment3( m_TextComment3->GetValue() );
m_tb.SetComment4( m_TextComment4->GetValue() );
m_Parent->SetTitleBlock( m_tb );
m_parent->SetTitleBlock( m_tb );
#ifdef EESCHEMA
// Exports settings to other sheets if requested:
@ -508,7 +550,7 @@ limits\n%.1f - %.1f %s!\nSelect another custom paper size?" ),
// Update title blocks for all screens
for( screen = ScreenList.GetFirst(); screen != NULL; screen = ScreenList.GetNext() )
{
if( screen == m_Screen )
if( screen == m_screen )
continue;
TITLE_BLOCK tb2 = screen->GetTitleBlock();
@ -542,8 +584,7 @@ limits\n%.1f - %.1f %s!\nSelect another custom paper size?" ),
#endif
m_Screen->SetModify();
m_Parent->GetCanvas()->Refresh();
return true;
}
@ -600,7 +641,7 @@ void DIALOG_PAGES_SETTINGS::UpdatePageLayoutExample()
if( m_page_bitmap->IsOk() )
{
// Calculate layout preview scale.
int appScale = m_Screen->MilsToIuScalar();
int appScale = m_screen->MilsToIuScalar();
double scaleW = (double) lyWidth / clamped_layout_size.x / appScale;
double scaleH = (double) lyHeight / clamped_layout_size.y / appScale;
@ -637,8 +678,8 @@ void DIALOG_PAGES_SETTINGS::UpdatePageLayoutExample()
DrawPageLayout( &memDC, NULL, pageDUMMY,
emptyString, emptyString,
m_tb, m_Screen->m_NumberOfScreens,
m_Screen->m_ScreenNumber, 1, appScale, DARKGRAY, RED );
m_tb, m_screen->m_NumberOfScreens,
m_screen->m_ScreenNumber, 1, appScale, DARKGRAY, RED );
memDC.SelectObject( wxNullBitmap );
m_PageLayoutExampleBitmap->SetBitmap( *m_page_bitmap );
@ -750,3 +791,9 @@ void DIALOG_PAGES_SETTINGS::GetCustomSizeMilsFromDialog()
customSizeY = Clamp( double( INT_MIN ), customSizeY, double( INT_MAX ) );
m_layout_size = wxSize( KiROUND( customSizeX ), KiROUND( customSizeY ) );
}
// Called on .kicad_wks file description selection change
void DIALOG_PAGES_SETTINGS::OnWksFileSelection( wxFileDirPickerEvent& event )
{
// Currently: Nothing to do.
}

View File

@ -35,86 +35,90 @@
class DIALOG_PAGES_SETTINGS: public DIALOG_PAGES_SETTINGS_BASE
{
private:
EDA_DRAW_FRAME* m_Parent;
BASE_SCREEN* m_Screen;
EDA_DRAW_FRAME* m_parent;
BASE_SCREEN* m_screen;
wxArrayString m_pageFmt; /// list of page sizes (not translated)
bool m_initialized;
bool m_modified;
bool m_save_flag;
bool m_localPrjConfigChanged; /// the page layuout filename was changed
wxBitmap* m_page_bitmap; /// Temporary bitmap for the page layout example.
wxSize m_layout_size; /// Logical page layout size.
PAGE_INFO m_pageInfo; /// Temporary page info.
bool m_customFmt; /// true if the page selection is custom
TITLE_BLOCK m_tb; /// Temporary title block (basic inscriptions).
wxString m_plDescrFileName; /// Temporary BASE_SCREEN::m_PageLayoutDescrFileName copy
public:
DIALOG_PAGES_SETTINGS( EDA_DRAW_FRAME* parent );
~DIALOG_PAGES_SETTINGS();
const wxString GetWksFileName()
{
return m_filePicker->GetPath();
}
void SetWksFileName(const wxString& aFilename )
{
m_filePicker->SetPath( aFilename );
}
void EnableWksFileNamePicker( bool aEnable )
{
m_filePicker->Enable( aEnable );
}
private:
/// Initialises member variables
void initDialog();
void initDialog(); // Initialisation of member variables
/// wxEVT_CLOSE_WINDOW event handler for ID_DIALOG
void OnCloseWindow( wxCloseEvent& event );
// void OnCloseWindow( wxCloseEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
// event handler for wxID_OK
void OnOkClick( wxCommandEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
// event handler for wxID_CANCEL
void OnCancelClick( wxCommandEvent& event );
/// exEVT_COMMAND_CHOICE_SELECTED event handler for ID_CHICE_PAGE_SIZE
// event handlers for page size choice
void OnPaperSizeChoice( wxCommandEvent& event );
/// exEVT_COMMAND_TEXT_UPDATED event handler for ID_TEXTCTRL_USER_PAGE_SIZE_X
void OnUserPageSizeXTextUpdated( wxCommandEvent& event );
/// exEVT_COMMAND_TEXT_UPDATED event handler for ID_TEXTCTRL_USER_PAGE_SIZE_Y
void OnUserPageSizeYTextUpdated( wxCommandEvent& event );
/// exEVT_COMMAND_CHOICE_SELECTED event handler for ID_CHOICE_PAGE_ORIENTATION
void OnPageOrientationChoice( wxCommandEvent& event );
/// exEVT_COMMAND_TEXT_UPDATED event handler for ID_TEXTCTRL_REVISION
// event handler for texts in title block
void OnRevisionTextUpdated( wxCommandEvent& event );
/// exEVT_COMMAND_TEXT_UPDATED event handler for ID_TEXTCTRL_DATE
void OnDateTextUpdated( wxCommandEvent& event );
/// exEVT_COMMAND_TEXT_UPDATED event handler for ID_TEXTCTRL_TITLE
void OnTitleTextUpdated( wxCommandEvent& event );
/// exEVT_COMMAND_TEXT_UPDATED event handler for ID_TEXTCTRL_COMPANY
void OnCompanyTextUpdated( wxCommandEvent& event );
/// exEVT_COMMAND_TEXT_UPDATED event handler for ID_TEXTCTRL_COMMENT1
void OnComment1TextUpdated( wxCommandEvent& event );
/// exEVT_COMMAND_TEXT_UPDATED event handler for ID_TEXTCTRL_COMMENT2
void OnComment2TextUpdated( wxCommandEvent& event );
/// exEVT_COMMAND_TEXT_UPDATED event handler for ID_TEXTCTRL_COMMENT3
void OnComment3TextUpdated( wxCommandEvent& event );
/// exEVT_COMMAND_TEXT_UPDATED event handler for ID_TEXTCTRL_COMMENT4
void OnComment4TextUpdated( wxCommandEvent& event );
/// Handle button click for setting the date from the picker
virtual void OnDateApplyClick( wxCommandEvent& event );
// Handle button click for setting the date from the picker
void OnDateApplyClick( wxCommandEvent& event );
// .kicad_wks file description selection
void OnWksFileSelection( wxFileDirPickerEvent& event );
// Save in the current title block the new page settings
// return true if changes are made, or false if not
bool SavePageSettings();
void SetCurrentPageSizeSelection( const wxString& aPaperSize );
void SavePageSettings( wxCommandEvent& event );
/// Update page layout example
// Update page layout example
void UpdatePageLayoutExample();
/// Get page layout info from selected dialog items
// Get page layout info from selected dialog items
void GetPageLayoutInfoFromDialog();
/// Get custom page size in mils from dialog
// Get custom page size in mils from dialog
void GetCustomSizeMilsFromDialog();
/// @return true if the local prj config is chande
/// i.e. if the page layout descr file has chnaged
bool LocalPrjConfigChanged() { return m_localPrjConfigChanged; }
};
#endif // _DIALOG_PAGES_SETTINGS_H_

View File

@ -139,7 +139,7 @@ DIALOG_PAGES_SETTINGS_BASE::DIALOG_PAGES_SETTINGS_BASE( wxWindow* parent, wxWind
m_staticTextDate = new wxStaticText( this, wxID_ANY, _("Issue Date"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextDate->Wrap( -1 );
bSizerDate->Add( m_staticTextDate, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
bSizerDate->Add( m_staticTextDate, 0, wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizerissuedate;
bSizerissuedate = new wxBoxSizer( wxHORIZONTAL );
@ -195,7 +195,7 @@ DIALOG_PAGES_SETTINGS_BASE::DIALOG_PAGES_SETTINGS_BASE( wxWindow* parent, wxWind
m_staticTextTitle = new wxStaticText( this, wxID_ANY, _("Title"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextTitle->Wrap( -1 );
bSizerTitle->Add( m_staticTextTitle, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
bSizerTitle->Add( m_staticTextTitle, 0, wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizer12;
bSizer12 = new wxBoxSizer( wxHORIZONTAL );
@ -220,7 +220,7 @@ DIALOG_PAGES_SETTINGS_BASE::DIALOG_PAGES_SETTINGS_BASE( wxWindow* parent, wxWind
m_staticText13 = new wxStaticText( this, wxID_ANY, _("Company"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText13->Wrap( -1 );
bSizerCompany->Add( m_staticText13, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
bSizerCompany->Add( m_staticText13, 0, wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizer14;
bSizer14 = new wxBoxSizer( wxHORIZONTAL );
@ -245,7 +245,7 @@ DIALOG_PAGES_SETTINGS_BASE::DIALOG_PAGES_SETTINGS_BASE( wxWindow* parent, wxWind
m_staticTextComment1 = new wxStaticText( this, wxID_ANY, _("Comment1"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextComment1->Wrap( -1 );
bSizerComment1->Add( m_staticTextComment1, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
bSizerComment1->Add( m_staticTextComment1, 0, wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizercmt1;
bSizercmt1 = new wxBoxSizer( wxHORIZONTAL );
@ -270,7 +270,7 @@ DIALOG_PAGES_SETTINGS_BASE::DIALOG_PAGES_SETTINGS_BASE( wxWindow* parent, wxWind
m_staticTextComment2 = new wxStaticText( this, wxID_ANY, _("Comment2"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextComment2->Wrap( -1 );
bSizerComment2->Add( m_staticTextComment2, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
bSizerComment2->Add( m_staticTextComment2, 0, wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizercmt2;
bSizercmt2 = new wxBoxSizer( wxHORIZONTAL );
@ -295,7 +295,7 @@ DIALOG_PAGES_SETTINGS_BASE::DIALOG_PAGES_SETTINGS_BASE( wxWindow* parent, wxWind
m_staticTextComment3 = new wxStaticText( this, wxID_ANY, _("Comment3"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextComment3->Wrap( -1 );
bSizerComment12->Add( m_staticTextComment3, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
bSizerComment12->Add( m_staticTextComment3, 0, wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizercmt3;
bSizercmt3 = new wxBoxSizer( wxHORIZONTAL );
@ -320,7 +320,7 @@ DIALOG_PAGES_SETTINGS_BASE::DIALOG_PAGES_SETTINGS_BASE( wxWindow* parent, wxWind
m_staticTextComment4 = new wxStaticText( this, wxID_ANY, _("Comment4"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextComment4->Wrap( -1 );
bSizerComment4->Add( m_staticTextComment4, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
bSizerComment4->Add( m_staticTextComment4, 0, wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizercmt4;
bSizercmt4 = new wxBoxSizer( wxHORIZONTAL );
@ -340,6 +340,25 @@ DIALOG_PAGES_SETTINGS_BASE::DIALOG_PAGES_SETTINGS_BASE( wxWindow* parent, wxWind
bSizerRight->Add( bSizerComment4, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizerFilename;
bSizerFilename = new wxBoxSizer( wxVERTICAL );
m_staticTextfilename = new wxStaticText( this, wxID_ANY, _("Page layout file description"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextfilename->Wrap( -1 );
bSizerFilename->Add( m_staticTextfilename, 0, wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizerfileSelection;
bSizerfileSelection = new wxBoxSizer( wxHORIZONTAL );
m_filePicker = new wxFilePickerCtrl( this, wxID_ANY, wxEmptyString, _("Select a file"), wxT("*.kicad_wks"), wxDefaultPosition, wxDefaultSize, wxFLP_OPEN|wxFLP_USE_TEXTCTRL );
bSizerfileSelection->Add( m_filePicker, 1, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
bSizerFilename->Add( bSizerfileSelection, 1, wxEXPAND, 5 );
bSizerRight->Add( bSizerFilename, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
bUpperSizerH->Add( bSizerRight, 1, wxEXPAND, 5 );
@ -360,7 +379,6 @@ DIALOG_PAGES_SETTINGS_BASE::DIALOG_PAGES_SETTINGS_BASE( wxWindow* parent, wxWind
this->Layout();
// Connect Events
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnCloseWindow ) );
m_paperSizeComboBox->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnPaperSizeChoice ), NULL, this );
m_orientationComboBox->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnPageOrientationChoice ), NULL, this );
m_TextUserSizeY->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnUserPageSizeYTextUpdated ), NULL, this );
@ -375,6 +393,7 @@ DIALOG_PAGES_SETTINGS_BASE::DIALOG_PAGES_SETTINGS_BASE( wxWindow* parent, wxWind
m_TextComment2->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnComment2TextUpdated ), NULL, this );
m_TextComment3->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnComment3TextUpdated ), NULL, this );
m_TextComment4->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnComment4TextUpdated ), NULL, this );
m_filePicker->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnWksFileSelection ), NULL, this );
m_sdbSizer1Cancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnCancelClick ), NULL, this );
m_sdbSizer1OK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnOkClick ), NULL, this );
}
@ -382,7 +401,6 @@ DIALOG_PAGES_SETTINGS_BASE::DIALOG_PAGES_SETTINGS_BASE( wxWindow* parent, wxWind
DIALOG_PAGES_SETTINGS_BASE::~DIALOG_PAGES_SETTINGS_BASE()
{
// Disconnect Events
this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnCloseWindow ) );
m_paperSizeComboBox->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnPaperSizeChoice ), NULL, this );
m_orientationComboBox->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnPageOrientationChoice ), NULL, this );
m_TextUserSizeY->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnUserPageSizeYTextUpdated ), NULL, this );
@ -397,6 +415,7 @@ DIALOG_PAGES_SETTINGS_BASE::~DIALOG_PAGES_SETTINGS_BASE()
m_TextComment2->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnComment2TextUpdated ), NULL, this );
m_TextComment3->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnComment3TextUpdated ), NULL, this );
m_TextComment4->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnComment4TextUpdated ), NULL, this );
m_filePicker->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnWksFileSelection ), NULL, this );
m_sdbSizer1Cancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnCancelClick ), NULL, this );
m_sdbSizer1OK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAGES_SETTINGS_BASE::OnOkClick ), NULL, this );

View File

@ -42,7 +42,7 @@
<property name="minimum_size"></property>
<property name="name">DIALOG_PAGES_SETTINGS_BASE</property>
<property name="pos"></property>
<property name="size">748,464</property>
<property name="size">748,470</property>
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
<property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
<property name="title">Page Settings</property>
@ -59,7 +59,7 @@
<event name="OnAuiPaneRestore"></event>
<event name="OnAuiRender"></event>
<event name="OnChar"></event>
<event name="OnClose">OnCloseWindow</event>
<event name="OnClose"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnHibernate"></event>
@ -1697,7 +1697,7 @@
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
<property name="flag">wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
@ -2439,7 +2439,7 @@
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
<property name="flag">wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
@ -2723,7 +2723,7 @@
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
<property name="flag">wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
@ -3007,7 +3007,7 @@
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
<property name="flag">wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
@ -3291,7 +3291,7 @@
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
<property name="flag">wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
@ -3575,7 +3575,7 @@
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
<property name="flag">wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
@ -3857,11 +3857,11 @@
<property name="name">bSizerComment4</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
<property name="flag">wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<object class="wxStaticText" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@ -3940,11 +3940,11 @@
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="1">
<object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bSizercmt4</property>
<property name="orient">wxHORIZONTAL</property>
@ -4132,6 +4132,200 @@
</object>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizerFilename</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Page layout file description</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_staticTextfilename</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizerfileSelection</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
<property name="proportion">1</property>
<object class="wxFilePickerCtrl" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="message">Select a file</property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_filePicker</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxFLP_OPEN|wxFLP_USE_TEXTCTRL</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value"></property>
<property name="wildcard">*.kicad_wks</property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnFileChanged">OnWksFileSelection</event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</object>

View File

@ -33,6 +33,7 @@ class DIALOG_SHIM;
#include <wx/datectrl.h>
#include <wx/dateevt.h>
#include <wx/checkbox.h>
#include <wx/filepicker.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
@ -111,12 +112,13 @@ class DIALOG_PAGES_SETTINGS_BASE : public DIALOG_SHIM
wxStaticText* m_staticTextComment4;
wxTextCtrl* m_TextComment4;
wxCheckBox* m_Comment4Export;
wxStaticText* m_staticTextfilename;
wxFilePickerCtrl* m_filePicker;
wxStdDialogButtonSizer* m_sdbSizer1;
wxButton* m_sdbSizer1OK;
wxButton* m_sdbSizer1Cancel;
// Virtual event handlers, overide them in your derived class
virtual void OnCloseWindow( wxCloseEvent& event ) { event.Skip(); }
virtual void OnPaperSizeChoice( wxCommandEvent& event ) { event.Skip(); }
virtual void OnPageOrientationChoice( wxCommandEvent& event ) { event.Skip(); }
virtual void OnUserPageSizeYTextUpdated( wxCommandEvent& event ) { event.Skip(); }
@ -131,13 +133,14 @@ class DIALOG_PAGES_SETTINGS_BASE : public DIALOG_SHIM
virtual void OnComment2TextUpdated( wxCommandEvent& event ) { event.Skip(); }
virtual void OnComment3TextUpdated( wxCommandEvent& event ) { event.Skip(); }
virtual void OnComment4TextUpdated( wxCommandEvent& event ) { event.Skip(); }
virtual void OnWksFileSelection( wxFileDirPickerEvent& event ) { event.Skip(); }
virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
public:
DIALOG_PAGES_SETTINGS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Page Settings"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 748,464 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
DIALOG_PAGES_SETTINGS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Page Settings"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 748,470 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_PAGES_SETTINGS_BASE();
};

View File

@ -885,7 +885,6 @@ wxString EDA_APP::FindFileInSearchPaths( const wxString& filename,
for( i = 0; i < m_searchPaths.GetCount(); i++ )
{
fn = wxFileName( m_searchPaths[i], wxEmptyString );
if( subdirs )
{
for( j = 0; j < subdirs->GetCount(); j++ )

View File

@ -1,5 +1,5 @@
/**
* @file title_block_shape.cpp
* @file class_worksheet_dataitem.cpp
* @brief description of graphic items and texts to build a title block
*/
@ -30,7 +30,7 @@
/*
* the class WORKSHEET_DATAITEM (and WORKSHEET_DATAITEM_TEXT) defines
* the class WORKSHEET_DATAITEM (and derived) defines
* a basic shape of a page layout ( frame references and title block )
* Basic shapes are line, rect and texts
* the WORKSHEET_DATAITEM coordinates units is the mm, and are relative to
@ -59,128 +59,160 @@
#include <worksheet.h>
#include <class_title_block.h>
#include <worksheet_shape_builder.h>
#include <class_worksheet_dataitem.h>
WORKSHEET_DATAITEM_POLYPOLYGON::WORKSHEET_DATAITEM_POLYPOLYGON() :
WORKSHEET_DATAITEM( WS_POLYPOLYGON )
// Static members of class WORKSHEET_DATAITEM:
double WORKSHEET_DATAITEM::m_WSunits2Iu = 1.0;
DPOINT WORKSHEET_DATAITEM::m_RB_Corner;
DPOINT WORKSHEET_DATAITEM::m_LT_Corner;
double WORKSHEET_DATAITEM::m_DefaultLineWidth = 0.0;
DSIZE WORKSHEET_DATAITEM::m_DefaultTextSize( TB_DEFAULT_TEXTSIZE, TB_DEFAULT_TEXTSIZE );
double WORKSHEET_DATAITEM::m_DefaultTextThickness = 0.0;
bool WORKSHEET_DATAITEM::m_SpecialMode = false;
EDA_COLOR_T WORKSHEET_DATAITEM::m_Color = RED; // the default color to draw items
EDA_COLOR_T WORKSHEET_DATAITEM::m_AltColor = RED; // an alternate color to draw items
EDA_COLOR_T WORKSHEET_DATAITEM::m_SelectedColor = YELLOW; // the color to draw selected items
// The constructor:
WORKSHEET_DATAITEM::WORKSHEET_DATAITEM( WS_ItemType aType )
{
m_Orient = 0.0;
}
const DPOINT WORKSHEET_DATAITEM_POLYPOLYGON::GetCornerPosition( unsigned aIdx,
int aRepeat ) const
{
DPOINT pos = m_Corners[aIdx];
// Rotation:
RotatePoint( &pos.x, &pos.y, m_Orient * 10 );
pos += GetStartPos( aRepeat );
return pos;
}
void WORKSHEET_DATAITEM_POLYPOLYGON::SetBoundingBox()
{
if( m_Corners.size() == 0 )
{
m_minCoord.x = m_maxCoord.x = 0.0;
m_minCoord.y = m_maxCoord.y = 0.0;
return;
}
DPOINT pos;
pos = m_Corners[0];
RotatePoint( &pos.x, &pos.y, m_Orient * 10 );
m_minCoord = m_maxCoord = pos;
for( unsigned ii = 1; ii < m_Corners.size(); ii++ )
{
pos = m_Corners[ii];
RotatePoint( &pos.x, &pos.y, m_Orient * 10 );
if( m_minCoord.x > pos.x )
m_minCoord.x = pos.x;
if( m_minCoord.y > pos.y )
m_minCoord.y = pos.y;
if( m_maxCoord.x < pos.x )
m_maxCoord.x = pos.x;
if( m_maxCoord.y < pos.y )
m_maxCoord.y = pos.y;
}
}
bool WORKSHEET_DATAITEM_POLYPOLYGON::IsInsidePage( int ii ) const
{
DPOINT pos = GetStartPos( ii );
pos += m_minCoord; // left top pos of bounding box
if( m_LT_Corner.x > pos.x || m_LT_Corner.y > pos.y )
return false;
pos = GetStartPos( ii );
pos += m_maxCoord; // rignt bottom pos of bounding box
if( m_RB_Corner.x < pos.x || m_RB_Corner.y < pos.y )
return false;
return true;
}
const wxPoint WORKSHEET_DATAITEM_POLYPOLYGON::GetCornerPositionUi( unsigned aIdx,
int aRepeat ) const
{
DPOINT pos = GetCornerPosition( aIdx, aRepeat );
pos = pos * m_WSunits2Iu;
return wxPoint( int(pos.x), int(pos.y) );
}
WORKSHEET_DATAITEM_TEXT::WORKSHEET_DATAITEM_TEXT( const wxChar* aTextBase ) :
WORKSHEET_DATAITEM( WS_TEXT )
{
m_TextBase = aTextBase;
m_type = aType;
m_flags = 0;
m_RepeatCount = 1;
m_IncrementLabel = 1;
m_Hjustify = GR_TEXT_HJUSTIFY_LEFT;
m_Vjustify = GR_TEXT_VJUSTIFY_CENTER;
m_Orient = 0.0;
m_TextSize.x = m_TextSize.y = TB_DEFAULT_TEXTSIZE;
m_LineWidth = 0;
}
void WORKSHEET_DATAITEM_TEXT::TransfertSetupToGraphicText( WS_DRAW_ITEM_TEXT* aGText )
// move item to aPosition
// starting point is moved to aPosition
// the Ending point is moved to a position which keeps the item size
// (if both coordinates have the same corner reference)
// MoveToUi and MoveTo takes the graphic position (i.e relative to the left top
// paper corner
void WORKSHEET_DATAITEM::MoveToUi( wxPoint aPosition )
{
aGText->SetHorizJustify( m_Hjustify ) ;
aGText->SetVertJustify( m_Vjustify );
aGText->SetOrientation( m_Orient * 10 ); // graphic text orient unit = 0.1 degree
DPOINT pos_mm;
pos_mm.x = aPosition.x / m_WSunits2Iu;
pos_mm.y = aPosition.y / m_WSunits2Iu;
MoveTo( pos_mm );
}
void WORKSHEET_DATAITEM_TEXT::IncrementLabel( int aIncr )
void WORKSHEET_DATAITEM::MoveTo( DPOINT aPosition )
{
wxChar lbchar = m_TextBase[0];
if( lbchar >= '0' && lbchar <= '9' )
// A number is expected:
m_FullText.Printf( wxT("%d"), aIncr + lbchar - '0' );
else
m_FullText.Printf( wxT("%c"), aIncr + lbchar );
DPOINT vector = aPosition - GetStartPos();
DPOINT endpos = vector + GetEndPos();
MoveStartPointTo( aPosition );
MoveEndPointTo( endpos );
}
void WORKSHEET_DATAITEM_TEXT::SetConstrainedTextSize()
/* move the starting point of the item to a new position
* aPosition = the new position of the starting point, in mm
*/
void WORKSHEET_DATAITEM::MoveStartPointTo( DPOINT aPosition )
{
m_ConstrainedTextSize = m_TextSize;
DPOINT position;
if( m_BoundingBoxSize.x )
// Calculate the position of the starting point
// relative to the reference corner
// aPosition is the position relative to the right top paper corner
switch( m_Pos.m_Anchor )
{
bool italic = (m_Flags & USE_ITALIC) != 0;
int linewidth = 0;
int lenMsg = ReturnGraphicTextWidth( m_FullText, m_TextSize.x, italic, linewidth );
if( lenMsg > m_BoundingBoxSize.x )
m_ConstrainedTextSize.x = m_TextSize.x * m_BoundingBoxSize.x / lenMsg;
case RB_CORNER:
position = m_RB_Corner - aPosition;
break;
case RT_CORNER:
position.x = m_RB_Corner.x - aPosition.x;
position.y = aPosition.y - m_LT_Corner.y;
break;
case LB_CORNER:
position.x = aPosition.x - m_LT_Corner.x;
position.y = m_RB_Corner.y - aPosition.y;
break;
case LT_CORNER:
position = aPosition - m_LT_Corner;
break;
}
if( m_BoundingBoxSize.y )
m_Pos.m_Pos = position;
}
/* move the starting point of the item to a new position
* aPosition = the new position of the starting point in graphic units
*/
void WORKSHEET_DATAITEM::MoveStartPointToUi( wxPoint aPosition )
{
DPOINT pos_mm;
pos_mm.x = aPosition.x / m_WSunits2Iu;
pos_mm.y = aPosition.y / m_WSunits2Iu;
MoveStartPointTo( pos_mm );
}
/**
* move the ending point of the item to a new position
* has meaning only for items defined by 2 points
* (segments and rectangles)
* aPosition = the new position of the ending point, in mm
*/
void WORKSHEET_DATAITEM::MoveEndPointTo( DPOINT aPosition )
{
DPOINT position;
// Calculate the position of the starting point
// relative to the reference corner
// aPosition is the position relative to the right top paper corner
switch( m_End.m_Anchor )
{
if( m_ConstrainedTextSize.y > m_BoundingBoxSize.y )
m_ConstrainedTextSize.y = m_BoundingBoxSize.y;
case RB_CORNER:
position = m_RB_Corner - aPosition;
break;
case RT_CORNER:
position.x = m_RB_Corner.x - aPosition.x;
position.y = aPosition.y - m_LT_Corner.y;
break;
case LB_CORNER:
position.x = aPosition.x - m_LT_Corner.x;
position.y = m_RB_Corner.y - aPosition.y;
break;
case LT_CORNER:
position = aPosition - m_LT_Corner;
break;
}
// Modify m_End only for items having 2 coordinates
switch( GetType() )
{
case WS_SEGMENT:
case WS_RECT:
m_End.m_Pos = position;
break;
default:
break;
}
}
/* move the ending point of the item to a new position
* has meaning only for items defined by 2 points
* (segments and rectangles)
* aPosition = the new position of the ending point in graphic units
*/
void WORKSHEET_DATAITEM::MoveEndPointToUi( wxPoint aPosition )
{
DPOINT pos_mm;
pos_mm.x = aPosition.x / m_WSunits2Iu;
pos_mm.y = aPosition.y / m_WSunits2Iu;
MoveEndPointTo( pos_mm );
}
const DPOINT WORKSHEET_DATAITEM::GetStartPos( int ii ) const
@ -278,161 +310,188 @@ bool WORKSHEET_DATAITEM::IsInsidePage( int ii ) const
return true;
}
double WORKSHEET_DATAITEM::m_WSunits2Iu = 1.0;
DPOINT WORKSHEET_DATAITEM::m_RB_Corner;
DPOINT WORKSHEET_DATAITEM::m_LT_Corner;
WORKSHEET_LAYOUT dataList; // The layout shape
void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
const wxString& aPaperFormat,
const wxString& aFileName,
const wxString& aSheetPathHumanReadable,
const TITLE_BLOCK& aTitleBlock,
EDA_COLOR_T aLineColor, EDA_COLOR_T aTextColor )
const wxString WORKSHEET_DATAITEM::GetClassName() const
{
#define milsTomm (25.4/1000)
m_titleBlock = &aTitleBlock,
m_paperFormat = &aPaperFormat,
m_fileName = &aFileName,
m_sheetFullName = &aSheetPathHumanReadable;
// Build the basic layout shape, if the layout list is empty
if( dataList.GetCount() == 0 )
dataList.SetLayout();
WORKSHEET_DATAITEM::m_WSunits2Iu = m_milsToIu / milsTomm;
// Left top corner position
DPOINT lt_corner;
lt_corner.x = m_LTmargin.x;
lt_corner.y = m_LTmargin.y;
WORKSHEET_DATAITEM::m_LT_Corner = lt_corner * milsTomm;
// Right bottom corner position
DPOINT rb_corner;
rb_corner.x = m_pageSize.x - m_RBmargin.x;
rb_corner.y = m_pageSize.y - m_RBmargin.y;
WORKSHEET_DATAITEM::m_RB_Corner = rb_corner * milsTomm;
WS_DRAW_ITEM_TEXT* gtext;
int pensize;
EDA_COLOR_T color;
for( unsigned ii = 0; ; ii++ )
wxString name;
switch( GetType() )
{
WORKSHEET_DATAITEM* wsItem = dataList.GetItem( ii );
case WS_TEXT: name = wxT("Text"); break;
case WS_SEGMENT: name = wxT("Line"); break;
case WS_RECT: name = wxT("Rect"); break;
case WS_POLYPOLYGON: name = wxT("Poly"); break;
}
if( wsItem == NULL )
break;
return name;
}
pensize = wsItem->GetPenSizeUi();
/* return 0 if the item has no specific option for page 1
* 1 if the item is only on page 1
* -1 if the item is not on page 1
*/
int WORKSHEET_DATAITEM::GetPage1Option()
{
if(( m_flags & PAGE1OPTION) == PAGE1OPTION_NOTONPAGE1 )
return -1;
switch( wsItem->m_Type )
{
case WORKSHEET_DATAITEM::WS_TEXT:
{
WORKSHEET_DATAITEM_TEXT * wsText = (WORKSHEET_DATAITEM_TEXT*)wsItem;
wsText->m_FullText = BuildFullText( wsText->m_TextBase );
if( wsText->m_FullText.IsEmpty() )
break;
if(( m_flags & PAGE1OPTION) == PAGE1OPTION_PAGE1ONLY )
return 1;
if( pensize == 0 )
pensize = m_penSize;
return 0;
}
color = aLineColor;
/* Set the option for page 1
* aChoice = 0 if the item has no specific option for page 1
* > 0 if the item is only on page 1
* < 0 if the item is not on page 1
*/
void WORKSHEET_DATAITEM::SetPage1Option( int aChoice )
{
ClearFlags( PAGE1OPTION );
if( wsText->m_Flags & USE_TEXT_COLOR )
color = aTextColor;
if( aChoice > 0)
SetFlags( PAGE1OPTION_PAGE1ONLY );
wsText->SetConstrainedTextSize();
wxSize textsize;
else if( aChoice < 0)
SetFlags( PAGE1OPTION_NOTONPAGE1 );
textsize.x = KiROUND( wsText->m_ConstrainedTextSize.x
* WORKSHEET_DATAITEM::m_WSunits2Iu );
textsize.y = KiROUND( wsText->m_ConstrainedTextSize.y
* WORKSHEET_DATAITEM::m_WSunits2Iu );
}
if( wsText->IsBold())
pensize = GetPenSizeForBold( std::min( textsize.x, textsize.y ) );
for( int jj = 0; jj < wsText->m_RepeatCount; jj++)
{
if( ! wsText->IsInsidePage( jj ) )
continue;
WORKSHEET_DATAITEM_POLYPOLYGON::WORKSHEET_DATAITEM_POLYPOLYGON() :
WORKSHEET_DATAITEM( WS_POLYPOLYGON )
{
m_Orient = 0.0;
}
Append( gtext = new WS_DRAW_ITEM_TEXT( wsText->m_FullText,
wsText->GetStartPosUi( jj ),
textsize,
pensize, color,
wsText->IsItalic(),
wsText->IsBold() ) );
wsText->TransfertSetupToGraphicText( gtext );
const DPOINT WORKSHEET_DATAITEM_POLYPOLYGON::GetCornerPosition( unsigned aIdx,
int aRepeat ) const
{
DPOINT pos = m_Corners[aIdx];
// Increment label for the next text
if( wsText->m_RepeatCount > 1 )
wsText->IncrementLabel( jj+1 );
}
}
break;
// Rotation:
RotatePoint( &pos.x, &pos.y, m_Orient * 10 );
pos += GetStartPos( aRepeat );
return pos;
}
case WORKSHEET_DATAITEM::WS_SEGMENT:
if( pensize == 0 )
pensize = m_penSize;
void WORKSHEET_DATAITEM_POLYPOLYGON::SetBoundingBox()
{
if( m_Corners.size() == 0 )
{
m_minCoord.x = m_maxCoord.x = 0.0;
m_minCoord.y = m_maxCoord.y = 0.0;
return;
}
for( int jj = 0; jj < wsItem->m_RepeatCount; jj++ )
{
if( ! wsItem->IsInsidePage( jj ) )
continue;
Append( new WS_DRAW_ITEM_LINE( wsItem->GetStartPosUi( jj ),
wsItem->GetEndPosUi( jj ),
pensize, aLineColor ) );
}
break;
DPOINT pos;
pos = m_Corners[0];
RotatePoint( &pos.x, &pos.y, m_Orient * 10 );
m_minCoord = m_maxCoord = pos;
case WORKSHEET_DATAITEM::WS_RECT:
if( pensize == 0 )
pensize = m_penSize;
for( unsigned ii = 1; ii < m_Corners.size(); ii++ )
{
pos = m_Corners[ii];
RotatePoint( &pos.x, &pos.y, m_Orient * 10 );
for( int jj = 0; jj < wsItem->m_RepeatCount; jj++ )
{
if( ! wsItem->IsInsidePage( jj ) )
break;
if( m_minCoord.x > pos.x )
m_minCoord.x = pos.x;
Append( new WS_DRAW_ITEM_RECT( wsItem->GetStartPosUi( jj ),
wsItem->GetEndPosUi( jj ),
pensize, aLineColor ) );
}
break;
if( m_minCoord.y > pos.y )
m_minCoord.y = pos.y;
case WORKSHEET_DATAITEM::WS_POLYPOLYGON:
{
WORKSHEET_DATAITEM_POLYPOLYGON * wspoly =
(WORKSHEET_DATAITEM_POLYPOLYGON*) wsItem;
for( int jj = 0; jj < wsItem->m_RepeatCount; jj++ )
{
if( ! wsItem->IsInsidePage( jj ) )
continue;
if( m_maxCoord.x < pos.x )
m_maxCoord.x = pos.x;
for( int kk = 0; kk < wspoly->GetPolyCount(); kk++ )
{
const bool fill = true;
WS_DRAW_ITEM_POLYGON* poly = new WS_DRAW_ITEM_POLYGON( fill,
pensize, aLineColor );
Append( poly );
// Create polygon outline
unsigned ist = wspoly->GetPolyIndexStart( kk );
unsigned iend = wspoly->GetPolyIndexEnd( kk );
while( ist <= iend )
poly->m_Corners.push_back(
wspoly->GetCornerPositionUi( ist++, jj ) );
}
}
}
break;
}
if( m_maxCoord.y < pos.y )
m_maxCoord.y = pos.y;
}
}
bool WORKSHEET_DATAITEM_POLYPOLYGON::IsInsidePage( int ii ) const
{
DPOINT pos = GetStartPos( ii );
pos += m_minCoord; // left top pos of bounding box
if( m_LT_Corner.x > pos.x || m_LT_Corner.y > pos.y )
return false;
pos = GetStartPos( ii );
pos += m_maxCoord; // rignt bottom pos of bounding box
if( m_RB_Corner.x < pos.x || m_RB_Corner.y < pos.y )
return false;
return true;
}
const wxPoint WORKSHEET_DATAITEM_POLYPOLYGON::GetCornerPositionUi( unsigned aIdx,
int aRepeat ) const
{
DPOINT pos = GetCornerPosition( aIdx, aRepeat );
pos = pos * m_WSunits2Iu;
return wxPoint( int(pos.x), int(pos.y) );
}
WORKSHEET_DATAITEM_TEXT::WORKSHEET_DATAITEM_TEXT( const wxChar* aTextBase ) :
WORKSHEET_DATAITEM( WS_TEXT )
{
m_TextBase = aTextBase;
m_IncrementLabel = 1;
m_Hjustify = GR_TEXT_HJUSTIFY_LEFT;
m_Vjustify = GR_TEXT_VJUSTIFY_CENTER;
m_Orient = 0.0;
m_LineWidth = 0.0; // 0.0 means use Dd
}
void WORKSHEET_DATAITEM_TEXT::TransfertSetupToGraphicText( WS_DRAW_ITEM_TEXT* aGText )
{
aGText->SetHorizJustify( m_Hjustify ) ;
aGText->SetVertJustify( m_Vjustify );
aGText->SetOrientation( m_Orient * 10 ); // graphic text orient unit = 0.1 degree
}
void WORKSHEET_DATAITEM_TEXT::IncrementLabel( int aIncr )
{
int last = m_TextBase.Len() -1;
wxChar lbchar = m_TextBase[last];
m_FullText = m_TextBase;
m_FullText.RemoveLast();
if( lbchar >= '0' && lbchar <= '9' )
// A number is expected:
m_FullText << (int)( aIncr + lbchar - '0' );
else
m_FullText << (wxChar) ( aIncr + lbchar );
}
void WORKSHEET_DATAITEM_TEXT::SetConstrainedTextSize()
{
m_ConstrainedTextSize = m_TextSize;
if( m_ConstrainedTextSize.x == 0 )
m_ConstrainedTextSize.x = m_DefaultTextSize.x;
if( m_ConstrainedTextSize.y == 0 )
m_ConstrainedTextSize.y = m_DefaultTextSize.y;
if( m_BoundingBoxSize.x )
{
int linewidth = 0;
// to know the X size of the line, we should use
// ReturnGraphicTextWidth
// but this function uses integers
// So, to avoid truncations with our unit in mm, use microns.
int sizex_micron = KiROUND( m_ConstrainedTextSize.x * 1000.0 );
double lenMsg = ReturnGraphicTextWidth( m_FullText, sizex_micron,
IsItalic(), linewidth ) / 1000.0;
if( lenMsg > m_BoundingBoxSize.x )
m_ConstrainedTextSize.x *= m_BoundingBoxSize.x / lenMsg;
}
if( m_BoundingBoxSize.y )
{
if( m_ConstrainedTextSize.y > m_BoundingBoxSize.y )
m_ConstrainedTextSize.y = m_BoundingBoxSize.y;
}
}

View File

@ -0,0 +1,174 @@
/**
* @file class_worksheet_layuout.cpp
* @brief description of graphic items and texts to build a title block
*/
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 1992-2013 Jean-Pierre Charras <jp.charras at wanadoo.fr>.
* Copyright (C) 1992-2013 KiCad Developers, see change_log.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
*/
/*
* the class WORKSHEET_DATAITEM (and derived ) defines
* a basic shape of a page layout ( frame references and title block )
* The list of these items is stored in a WORKSHEET_LAYOUT instance.
*
*
* These items cannot be drawn or plot "as this". they should be converted
* to a "draw list". When building the draw list:
* the WORKSHEET_LAYOUT is used to create a WS_DRAW_ITEM_LIST
* coordinates are converted to draw/plot coordinates.
* texts are expanded if they contain format symbols.
* Items with m_RepeatCount > 1 are created m_RepeatCount times
*
* the WORKSHEET_LAYOUT is created only once.
* the WS_DRAW_ITEM_LIST is created each time the page layout is plot/drawn
*
* the WORKSHEET_LAYOUT instance is created from a S expression which
* describes the page layout (can be the default page layout or a custom file).
*/
#include <fctsys.h>
#include <appl_wxstruct.h>
#include <drawtxt.h>
#include <worksheet.h>
#include <class_title_block.h>
#include <worksheet_shape_builder.h>
#include <class_worksheet_dataitem.h>
// The layout shape used in the application
// It is accessible by WORKSHEET_LAYOUT::GetTheInstance()
WORKSHEET_LAYOUT wksTheInstance;
void WORKSHEET_LAYOUT::ClearList()
{
for( unsigned ii = 0; ii < m_list.size(); ii++ )
delete m_list[ii];
m_list.clear();
}
/* Insert an item to the list of items at position aIdx
*/
void WORKSHEET_LAYOUT::Insert( WORKSHEET_DATAITEM* aItem, unsigned aIdx )
{
if ( aIdx >= GetCount() )
Append( aItem );
else
m_list.insert( m_list.begin() + aIdx, aItem );
}
/* Remove the item to the list of items at position aIdx
*/
bool WORKSHEET_LAYOUT::Remove( unsigned aIdx )
{
if ( aIdx >= GetCount() )
return false;
m_list.erase( m_list.begin() + aIdx );
return true;
}
/* Remove the item to the list of items at position aIdx
*/
bool WORKSHEET_LAYOUT::Remove( WORKSHEET_DATAITEM* aItem )
{
unsigned idx = 0;
while( idx < m_list.size() )
{
if( m_list[idx] == aItem )
break;
idx++;
}
return Remove( idx );
}
/* return the index of aItem, or -1 if does not exist
*/
int WORKSHEET_LAYOUT::GetItemIndex( WORKSHEET_DATAITEM* aItem ) const
{
unsigned idx = 0;
while( idx < m_list.size() )
{
if( m_list[idx] == aItem )
return (int) idx;
idx++;
}
return -1;
}
/* return the item from its index aIdx, or NULL if does not exist
*/
WORKSHEET_DATAITEM* WORKSHEET_LAYOUT::GetItem( unsigned aIdx ) const
{
if( aIdx < m_list.size() )
return m_list[aIdx];
else
return NULL;
}
/* return a short filename from a full filename:
* if the path is the current path,or if the path is the same
* as kicad.pro (in template), returns a shortname
* else do nothing and returns the full filename
*/
const wxString WORKSHEET_LAYOUT::MakeShortFileName( const wxString& aFullFileName )
{
wxFileName fn = aFullFileName;
wxString shortFileName = aFullFileName;
wxString fileName = wxGetApp().GetLibraryPathList().FindValidPath( fn.GetFullName() );
if( !fileName.IsEmpty() )
{
fn = fileName;
shortFileName = fn.GetFullName();
return shortFileName;
}
return shortFileName;
}
/**
* @return a full filename from a short filename,
* if the short filename path is void
* In this case the path is the same as kicad.pro (in template)
* else return the short filename (which have an absolute os relative path
*/
const wxString WORKSHEET_LAYOUT::MakeFullFileName( const wxString& aShortFileName )
{
wxFileName fn = aShortFileName;
wxString fullFileName = aShortFileName;
if( fn.GetPath().IsEmpty() )
{
wxString name = wxGetApp().GetLibraryPathList().FindValidPath( fn.GetFullName() );
if( !name.IsEmpty() )
fullFileName = name;
}
return fullFileName;
}

View File

@ -0,0 +1,201 @@
/**
* @file page_layout_default_description.cpp
*/
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 1992-2013 Jean-Pierre Charras <jp.charras at wanadoo.fr>.
* Copyright (C) 1992-2013 KiCad Developers, see change_log.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
*/
/* keyword used in page layout description are (see page_layout_reader.keywords)
* page_layout
* setup
* linewidth
* textlinewidth
* textsize
* comment
* option
* page1only
* notonpage1
* line
* rect
* polygon
* tbtext
* ltcorner
* lbcorner
* rbcorner
* rtcorner
* name
* pos
* start
* end
* pts
* xy
* maxlen
* maxheight
* font
* bold
* italic
* size
* justify
* left
* center
* right
* top
* bottom
* rotate
* repeat
* incrx
* incry
* incrlabel
*/
/*
* Items use coordinates.
* A coordinate is defined relative to a page corner
* A coordinate is the X pos, the Y pos, and the corner which is the coordinate origin
* the default is the bottom right corner
* example: (start 10 0 ltcorner) or (start 20 10)
* The direction depends on the corner: a positive coordinate define a point
* from the corner origin, to the opposite corner.
*
* Items are defined by a name, coordinates in mm and some attributes,
* and can be repeated.
* for instance (repeat 2) (incrx 2) (incry 2) repeat the item 2 times,
* and coordinates are incremented by 2 on X direction, and 2 on Y direction
* Comments are allowed. they are inside (), and start by the keyword comment
* example:
* (comment rect around the title block)
*
* Lines and rect are defined by 2 coordinates start and end, and attributes.
* Attributes are linewidth and repeat parameters.
* example:
* (line (start 50 2 ltcorner) (end 50 0 ltcorner) (repeat 30) (incrx 50) )
* (rect (comment rect around the title block) (linewidth 0.15) (start 110 34) (end 2 2) )
*
* Texts are defined by the text (between quotes), the position, and attributes
* example
* "(tbtext \"1\" (pos 25 1 lbcorner) (font (size 1.3 1.3)) (repeat 100) (incrx 50) )"
* the text can be rotated by (rotation <value>) with value = rot angle in degrees
* (font (size 1.3 1.3) bold italic) defines a specific size,
* with bold and italic options
* (justify <justif keyword>) controls the text justification (the default is left)
* justif keyword is center, left, right, top and bottom
* (justify center top) is a text centered on X axis and top aligned on vertical axis
* The text size can be constrained:
* (maxlen <value>) and (maxheight <value>) force the actual text x and/or y size to be
* reduced to limit the text height to the maxheight value,
* and the full text x size to the maxlen value.
* If the actual text size is smaller than limits, its size is not modified.
*
* Texts can include a format symbol, a la printf.
* At run time these format symbols will be replaced by their actual value.
*
* format symbols are:
*
* %% = replaced by %
* %K = Kicad version
* %Z = paper format name (A4, USLetter ...)
* %Y = company name
* %D = date
* %R = revision
* %S = sheet number
* %N = number of sheets
* %Cx = comment (x = 0 to 9 to identify the comment)
* %F = filename
* %P = sheet path (sheet full name)
* %T = title
*
* example:
* (tbtext \"Size: %Z\" ...) displays "Size A4" or Size USLetter"
*
* Poly Polygons
* Set of filled polygons are supported.
*
* The main purpose is to allow logos, or complex shapes
* They support the repeat and rotation options
* They are defined by
* (polygon (position ..) <rotation> <linewidth>
* the parameter linewidth defines the pen size used to draw/plot
* the polygon outlines (default = 0)
* example:
* (polygon (pos 134 18 rbcorner) (rotate 20) (linewidth 0.00254)
*
* and a list of corners like
* (pts (xy 20.574 8.382) (xy 19.9009 8.382) (xy 19.9009 6.26364) (xy 19.7485 5.98932)
* .... )
*
* each sequence like
* (pts (xy 20.574 8.382) (xy 19.9009 8.382) (xy 19.9009 6.26364) (xy 19.7485 5.98932)
* .... )
* defines a polygon.
* Each coordinate is relative to the polygon position.
* Therefore a "polygon" is in fact a set of polygons, of a poly polygon
*
*/
#include <worksheet.h> // defaultPageLayout
// height of the band reference grid 2.0 mm
// worksheet frame reference text size 1.3 mm
// default text size 1.5 mm
// default line width 0.15 mm
// frame ref pitch 50 mm
// export defaultPageLayout:
extern const char defaultPageLayout[];
// Default page layout (sizes are in mm)
const char defaultPageLayout[] = "( page_layout\n"
"(setup (textsize 1.5 1.5) (linewidth 0.15) (textlinewidth 0.15) )"
"(rect (comment \"rect around the title block\") (linewidth 0.15) (start 110 34) (end 2 2) )\n"
"(rect (start 0 0 ltcorner) (end 0 0 rbcorner) (repeat 2) (incrx 2) (incry 2) )\n"
"(line (start 50 2 ltcorner) (end 50 0 ltcorner) (repeat 30) (incrx 50) )\n"
"(tbtext \"1\" (pos 25 1 ltcorner) (font (size 1.3 1.3))(repeat 100) (incrx 50) )\n"
"(line (start 50 2 lbcorner) (end 50 0 lbcorner) (repeat 30) (incrx 50) )\n"
"(tbtext \"1\" (pos 25 1 lbcorner) (font (size 1.3 1.3)) (repeat 100) (incrx 50) )\n"
"(line (start 0 50 ltcorner) (end 2 50 ltcorner) (repeat 30) (incry 50) )\n"
"(tbtext \"A\" (pos 1 25 ltcorner) (font (size 1.3 1.3)) (justify center)(repeat 100) (incry 50) )\n"
"(line (start 0 50 rtcorner) (end 2 50 rtcorner) (repeat 30) (incry 50) )\n"
"(tbtext \"A\" (pos 1 25 rtcorner) (font (size 1.3 1.3)) (justify center) (repeat 100) (incry 50) )\n"
"(tbtext \"Date: %D\" (pos 87 6.9) )\n"
"(line (start 110 5.5) end 2 5.5) )\n"
"(tbtext \"%K\" (pos 109 4.1) (comment \"Kicad version\" ) )\n"
"(line (start 110 8.5) end 2 8.5) )\n"
"(tbtext \"Rev: %R\" (pos 24 6.9)(font bold)(justify left) )\n"
"(tbtext \"Size: %Z\" (comment \"Paper format name\")(pos 109 6.9) )\n"
"(tbtext \"Id: %S/%N\" (comment \"Sheet id\")(pos 24 4.1) )\n"
"(line (start 110 12.5) end 2 12.5) )\n"
"(tbtext \"Title: %T\" (pos 109 10.7)(font bold italic (size 2 2)) )\n"
"(tbtext \"File: %F\" (pos 109 14.3) )\n"
"(line (start 110 18.5) end 2 18.5) )\n"
"(tbtext \"Sheet: %P\" (pos 109 17) )\n"
"(tbtext \"%Y\" (comment \"Company name\") (pos 109 20)(font bold) )\n"
"(tbtext \"%C0\" (comment \"Comment 0\") (pos 109 23) )\n"
"(tbtext \"%C1\" (comment \"Comment 1\") (pos 109 26) )\n"
"(tbtext \"%C2\" (comment \"Comment 2\") (pos 109 29) )\n"
"(tbtext \"%C3\" (comment \"Comment 3\") (pos 109 32) )\n"
"(line (start 90 8.5) end 90 5.5) )\n"
"(line (start 26 8.5) end 26 2) )\n"
")\n"
;

View File

@ -0,0 +1,382 @@
/**
* @file page_layout_graphic_items.cpp
* @brief description of graphic items and texts to build a title block
*/
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 1992-2013 Jean-Pierre Charras <jp.charras at wanadoo.fr>.
* Copyright (C) 1992-2013 KiCad Developers, see change_log.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
*/
/*
* the class WORKSHEET_DATAITEM (and WORKSHEET_DATAITEM_TEXT) defines
* a basic shape of a page layout ( frame references and title block )
* Basic shapes are line, rect and texts
* the WORKSHEET_DATAITEM coordinates units is the mm, and are relative to
* one of 4 page corners.
*
* These items cannot be drawn or plot "as this". they should be converted
* to a "draw list" (WS_DRAW_ITEM_BASE and derived items)
* The list of these items is stored in a WORKSHEET_LAYOUT instance.
*
* When building the draw list:
* the WORKSHEET_LAYOUT is used to create a WS_DRAW_ITEM_LIST
* coordinates are converted to draw/plot coordinates.
* texts are expanded if they contain format symbols.
* Items with m_RepeatCount > 1 are created m_RepeatCount times
*
* the WORKSHEET_LAYOUT is created only once.
* the WS_DRAW_ITEM_LIST is created each time the page layout is plotted/drawn
*
* the WORKSHEET_LAYOUT instance is created from a S expression which
* describes the page layout (can be the default page layout or a custom file).
*/
#include <fctsys.h>
#include <drawtxt.h>
#include <worksheet.h>
#include <class_title_block.h>
#include <worksheet_shape_builder.h>
#include <class_worksheet_dataitem.h>
/* a helper function to draw graphic symbols at start point or end point of
* an item.
* The start point symbol is a filled rectangle
* The start point symbol is a filled circle
*/
inline void drawMarker( EDA_RECT* aClipBox, wxDC* aDC,
const wxPoint& aPos, int aSize, bool aEndPointShape = false )
{
int markerHalfSize = aSize/2;
if( aEndPointShape )
GRFilledCircle( aClipBox, aDC, aPos.x, aPos.y, markerHalfSize,
0, GREEN, GREEN );
else
GRFilledRect( aClipBox, aDC,
aPos.x - markerHalfSize, aPos.y - markerHalfSize,
aPos.x + markerHalfSize, aPos.y + markerHalfSize,
0, GREEN, GREEN );
}
/* Draws the item list created by BuildWorkSheetGraphicList
* aClipBox = the clipping rect, or NULL if no clipping
* aDC = the current Device Context
* The not selected items are drawn first (most of items)
* The selected items are drawn after (usually 0 or 1)
* to be sure they are seen, even for overlapping items
*/
void WS_DRAW_ITEM_LIST::Draw( EDA_RECT* aClipBox, wxDC* aDC )
{
// The not selected items are drawn first (most of items)
for( WS_DRAW_ITEM_BASE* item = GetFirst(); item; item = GetNext() )
{
if( item->GetParent() && item->GetParent()->IsSelected() )
continue;
switch( item->GetType() )
{
case WS_DRAW_ITEM_BASE::wsg_line:
{
WS_DRAW_ITEM_LINE* line = (WS_DRAW_ITEM_LINE*) item;
GRLine( aClipBox, aDC,
line->GetStart(), line->GetEnd(),
line->GetPenWidth(), line->GetColor() );
}
break;
case WS_DRAW_ITEM_BASE::wsg_rect:
{
WS_DRAW_ITEM_RECT* rect = (WS_DRAW_ITEM_RECT*) item;
GRRect( aClipBox, aDC,
rect->GetStart().x, rect->GetStart().y,
rect->GetEnd().x, rect->GetEnd().y,
rect->GetPenWidth(), rect->GetColor() );
}
break;
case WS_DRAW_ITEM_BASE::wsg_text:
{
WS_DRAW_ITEM_TEXT* text = (WS_DRAW_ITEM_TEXT*) item;
DrawGraphicText( aClipBox, aDC, text->GetTextPosition(),
text->GetColor(), text->GetText(),
text->GetOrientation(), text->GetSize(),
text->GetHorizJustify(), text->GetVertJustify(),
text->GetPenWidth(), text->IsItalic(), text->IsBold() );
}
break;
case WS_DRAW_ITEM_BASE::wsg_poly:
{
WS_DRAW_ITEM_POLYGON* poly = (WS_DRAW_ITEM_POLYGON*) item;
GRPoly( aClipBox, aDC,
poly->m_Corners.size(), &poly->m_Corners[0],
poly->IsFilled() ? FILLED_SHAPE : NO_FILL,
poly->GetPenWidth(),
poly->GetColor(), poly->GetColor() );
}
break;
}
}
// The selected items are drawn after (usually 0 or 1)
int markerSize = WORKSHEET_DATAITEM::GetMarkerSizeUi();
for( WS_DRAW_ITEM_BASE* item = GetFirst(); item; item = GetNext() )
{
if( !item->GetParent() || !item->GetParent()->IsSelected() )
continue;
switch( item->GetType() )
{
case WS_DRAW_ITEM_BASE::wsg_line:
{
WS_DRAW_ITEM_LINE* line = (WS_DRAW_ITEM_LINE*) item;
GRLine( aClipBox, aDC,
line->GetStart(), line->GetEnd(),
line->GetPenWidth(), line->GetColor() );
if( markerSize )
{
drawMarker( aClipBox, aDC, line->GetStart(), markerSize );
drawMarker( aClipBox, aDC, line->GetEnd(), markerSize, true );
}
}
break;
case WS_DRAW_ITEM_BASE::wsg_rect:
{
WS_DRAW_ITEM_RECT* rect = (WS_DRAW_ITEM_RECT*) item;
GRRect( aClipBox, aDC,
rect->GetStart().x, rect->GetStart().y,
rect->GetEnd().x, rect->GetEnd().y,
rect->GetPenWidth(), rect->GetColor() );
if( markerSize )
{
drawMarker( aClipBox, aDC, rect->GetStart(), markerSize );
drawMarker( aClipBox, aDC, rect->GetEnd(), markerSize, true );
}
}
break;
case WS_DRAW_ITEM_BASE::wsg_text:
{
WS_DRAW_ITEM_TEXT* text = (WS_DRAW_ITEM_TEXT*) item;
DrawGraphicText( aClipBox, aDC, text->GetTextPosition(),
text->GetColor(), text->GetText(),
text->GetOrientation(), text->GetSize(),
text->GetHorizJustify(), text->GetVertJustify(),
text->GetPenWidth(), text->IsItalic(), text->IsBold() );
if( markerSize )
drawMarker( aClipBox, aDC, text->GetTextPosition(),
markerSize );
}
break;
case WS_DRAW_ITEM_BASE::wsg_poly:
{
WS_DRAW_ITEM_POLYGON* poly = (WS_DRAW_ITEM_POLYGON*) item;
GRPoly( aClipBox, aDC,
poly->m_Corners.size(), &poly->m_Corners[0],
poly->IsFilled() ? FILLED_SHAPE : NO_FILL,
poly->GetPenWidth(),
poly->GetColor(), poly->GetColor() );
if( markerSize )
{
drawMarker( aClipBox, aDC, poly->GetPosition(),
markerSize );
}
}
break;
}
}
}
// return true if the point aPosition is on the text
bool WS_DRAW_ITEM_TEXT::HitTest( const wxPoint& aPosition)
{
return EDA_TEXT::TextHitTest( aPosition, 0 );
}
/* return true if the point aPosition is on the starting point of this item
*/
bool WS_DRAW_ITEM_TEXT::HitTestStartPoint( const wxPoint& aPosition)
{
wxPoint pos = GetTextPosition();
if( std::abs( pos.x - aPosition.x) <= WORKSHEET_DATAITEM::GetMarkerSizeUi()/2 &&
std::abs( pos.y - aPosition.y) <= WORKSHEET_DATAITEM::GetMarkerSizeUi()/2 )
return true;
return false;
}
// return true if the point aPosition is inside one of polygons
#include <polygon_test_point_inside.h>
bool WS_DRAW_ITEM_POLYGON::HitTest( const wxPoint& aPosition)
{
return TestPointInsidePolygon( &m_Corners[0],
m_Corners.size(), aPosition );
}
/* return true if the point aPosition is on the starting point of this item
*/
bool WS_DRAW_ITEM_POLYGON::HitTestStartPoint( const wxPoint& aPosition)
{
wxPoint pos = GetPosition();
if( std::abs( pos.x - aPosition.x) <= WORKSHEET_DATAITEM::GetMarkerSizeUi()/2 &&
std::abs( pos.y - aPosition.y) <= WORKSHEET_DATAITEM::GetMarkerSizeUi()/2 )
return true;
return false;
}
// return true if the point aPosition is on the rect outline
bool WS_DRAW_ITEM_RECT::HitTest( const wxPoint& aPosition)
{
int dist = GetPenWidth()/2;
wxPoint start = GetStart();
wxPoint end;
end.x = GetEnd().x;
end.y = start.y;
// Upper line
if( TestSegmentHit( aPosition, start, end, dist ) )
return true;
// Right line
start = end;
end.y = GetEnd().y;
if( TestSegmentHit( aPosition, start, end, dist ) )
return true;
// lower line
start = end;
end.x = GetStart().x;
if( TestSegmentHit( aPosition, start, end, dist ) )
return true;
// left line
start = end;
end = GetStart();
if( TestSegmentHit( aPosition, start, end, dist ) )
return true;
return false;
}
/* return true if the point aPosition is on the starting point of this item
*/
bool WS_DRAW_ITEM_RECT::HitTestStartPoint( const wxPoint& aPosition)
{
wxPoint pos = GetStart();
if( std::abs( pos.x - aPosition.x) <= WORKSHEET_DATAITEM::GetMarkerSizeUi()/2 &&
std::abs( pos.y - aPosition.y) <= WORKSHEET_DATAITEM::GetMarkerSizeUi()/2 )
return true;
return false;
}
/* return true if the point aPosition is on the ending point of this item
*/
bool WS_DRAW_ITEM_RECT::HitTestEndPoint( const wxPoint& aPosition)
{
wxPoint pos = GetEnd();
int dist = (int) hypot( pos.x - aPosition.x, pos.y - aPosition.y );
if( dist <= WORKSHEET_DATAITEM::GetMarkerSizeUi()/2 )
return true;
return false;
}
// return true if the point aPosition is on the text
bool WS_DRAW_ITEM_LINE::HitTest( const wxPoint& aPosition)
{
return TestSegmentHit( aPosition, GetStart(), GetEnd(), GetPenWidth()/2 );
}
/* return true if the point aPosition is on the starting point of this item
*/
bool WS_DRAW_ITEM_LINE::HitTestStartPoint( const wxPoint& aPosition)
{
wxPoint pos = GetStart();
if( std::abs( pos.x - aPosition.x) <= WORKSHEET_DATAITEM::GetMarkerSizeUi()/2 &&
std::abs( pos.y - aPosition.y) <= WORKSHEET_DATAITEM::GetMarkerSizeUi()/2 )
return true;
return false;
}
/* return true if the point aPosition is on the ending point of this item
*/
bool WS_DRAW_ITEM_LINE::HitTestEndPoint( const wxPoint& aPosition)
{
wxPoint pos = GetEnd();
if( std::abs( pos.x - aPosition.x) <= WORKSHEET_DATAITEM::GetMarkerSizeUi()/2 &&
std::abs( pos.y - aPosition.y) <= WORKSHEET_DATAITEM::GetMarkerSizeUi()/2 )
return true;
return false;
}
/* Locate graphic items in m_graphicList at location aPosition
* aList = the list of items found
* aPosition is the position (in user units) to locate items
*/
void WS_DRAW_ITEM_LIST::Locate( std::vector <WS_DRAW_ITEM_BASE*>& aList,
const wxPoint& aPosition)
{
for( WS_DRAW_ITEM_BASE* item = GetFirst(); item; item = GetNext() )
{
item->m_Flags &= ~(LOCATE_STARTPOINT|LOCATE_ENDPOINT);
bool found = false;
if( item->HitTestStartPoint ( aPosition ) )
{
item->m_Flags |= LOCATE_STARTPOINT;
found = true;
}
if( item->HitTestEndPoint ( aPosition ) )
{
item->m_Flags |= LOCATE_ENDPOINT;
found = true;
}
if( found || item->HitTest( aPosition ) )
{
aList.push_back( item );
}
}
}

View File

@ -0,0 +1,684 @@
/**
* @file page_layout_reader.cpp
* @brief read an S expression of description of graphic items and texts
* to build a title block and page layout
*/
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 1992-2013 Jean-Pierre Charras <jp.charras at wanadoo.fr>.
* Copyright (C) 1992-2013 KiCad Developers, see change_log.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
*/
#include <fctsys.h>
#include <base_struct.h>
#include <worksheet.h>
#include <worksheet_shape_builder.h>
#include <class_worksheet_dataitem.h>
#include <page_layout_reader_lexer.h>
using namespace TB_READER_T;
/**
* Class PAGE_LAYOUT_READER_PARSER
* holds data and functions pertinent to parsing a S-expression file
* for a WORKSHEET_LAYOUT.
*/
class PAGE_LAYOUT_READER_PARSER : public PAGE_LAYOUT_READER_LEXER
{
public:
PAGE_LAYOUT_READER_PARSER( const char* aLine, const wxString& aSource );
void Parse( WORKSHEET_LAYOUT* aLayout )
throw( PARSE_ERROR, IO_ERROR );
private:
/**
* Function parseInt
* parses an integer and constrains it between two values.
* @param aMin is the smallest return value.
* @param aMax is the largest return value.
* @return int - the parsed integer.
*/
int parseInt( int aMin, int aMax );
/**
* Function parseDouble
* parses a double
* @return double - the parsed double.
*/
double parseDouble();
void parseSetup() throw( IO_ERROR, PARSE_ERROR );
void parseGraphic( WORKSHEET_DATAITEM * aItem ) throw( IO_ERROR, PARSE_ERROR );
void parseText( WORKSHEET_DATAITEM_TEXT * aItem ) throw( IO_ERROR, PARSE_ERROR );
void parsePolygon( WORKSHEET_DATAITEM_POLYPOLYGON * aItem )
throw( IO_ERROR, PARSE_ERROR );
void parsePolyOutline( WORKSHEET_DATAITEM_POLYPOLYGON * aItem )
throw( IO_ERROR, PARSE_ERROR );
void parseCoordinate( POINT_COORD& aCoord) throw( IO_ERROR, PARSE_ERROR );
void readOption( WORKSHEET_DATAITEM * aItem ) throw( IO_ERROR, PARSE_ERROR );
};
// PCB_PLOT_PARAMS_PARSER
PAGE_LAYOUT_READER_PARSER::PAGE_LAYOUT_READER_PARSER( const char* aLine, const wxString& aSource ) :
PAGE_LAYOUT_READER_LEXER( aLine, aSource )
{
}
void PAGE_LAYOUT_READER_PARSER::Parse( WORKSHEET_LAYOUT* aLayout )
throw( PARSE_ERROR, IO_ERROR )
{
T token;
WORKSHEET_DATAITEM * item;
LOCALE_IO toggle;
while( ( token = NextTok() ) != T_RIGHT )
{
if( token == T_EOF)
break;
if( token == T_LEFT )
token = NextTok();
if( token == T_page_layout )
continue;
switch( token )
{
case T_setup: // Defines default values for graphic items
parseSetup();
break;
case T_line:
item = new WORKSHEET_DATAITEM( WORKSHEET_DATAITEM::WS_SEGMENT );
parseGraphic( item );
aLayout->Append( item );
break;
case T_rect:
item = new WORKSHEET_DATAITEM( WORKSHEET_DATAITEM::WS_RECT );
parseGraphic( item );
aLayout->Append( item );
break;
case T_polygon:
item = new WORKSHEET_DATAITEM_POLYPOLYGON();
parsePolygon( (WORKSHEET_DATAITEM_POLYPOLYGON*) item );
aLayout->Append( item );
break;
case T_tbtext:
NeedSYMBOLorNUMBER();
item = new WORKSHEET_DATAITEM_TEXT( FromUTF8() );
parseText( (WORKSHEET_DATAITEM_TEXT*) item );
aLayout->Append( item );
break;
default:
Unexpected( CurText() );
break;
}
}
}
void PAGE_LAYOUT_READER_PARSER::parseSetup() throw( IO_ERROR, PARSE_ERROR )
{
T token;
while( ( token = NextTok() ) != T_RIGHT )
{
if( token == T_EOF)
break;
switch( token )
{
case T_LEFT:
break;
case T_linewidth:
WORKSHEET_DATAITEM::m_DefaultLineWidth = parseDouble();
NeedRIGHT();
break;
case T_textsize:
WORKSHEET_DATAITEM::m_DefaultTextSize.x = parseDouble();
WORKSHEET_DATAITEM::m_DefaultTextSize.y = parseDouble();
NeedRIGHT();
break;
case T_textlinewidth:
WORKSHEET_DATAITEM::m_DefaultTextThickness = parseDouble();
NeedRIGHT();
break;
default:
Unexpected( CurText() );
break;
}
}
}
void PAGE_LAYOUT_READER_PARSER::parsePolygon( WORKSHEET_DATAITEM_POLYPOLYGON * aItem )
throw( IO_ERROR, PARSE_ERROR )
{
T token;
while( ( token = NextTok() ) != T_RIGHT )
{
if( token == T_EOF)
break;
if( token == T_LEFT )
token = NextTok();
switch( token )
{
case T_comment:
NeedSYMBOLorNUMBER();
aItem->m_Info = FromUTF8();
NeedRIGHT();
break;
case T_pos:
parseCoordinate( aItem->m_Pos );
break;
case T_name:
NeedSYMBOLorNUMBER();
aItem->m_Name = FromUTF8();
NeedRIGHT();
break;
case T_option:
readOption( aItem );
break;
case T_pts:
parsePolyOutline( aItem );
aItem->CloseContour();
break;
case T_rotate:
aItem->m_Orient = parseDouble();
NeedRIGHT();
break;
case T_repeat:
aItem->m_RepeatCount = parseInt( -1, 100 );
NeedRIGHT();
break;
case T_incrx:
aItem->m_IncrementVector.x = parseDouble();
NeedRIGHT();
break;
case T_incry:
aItem->m_IncrementVector.y = parseDouble();
NeedRIGHT();
break;
case T_linewidth:
aItem->m_LineWidth = parseDouble();
NeedRIGHT();
break;
default:
Unexpected( CurText() );
break;
}
}
aItem->SetBoundingBox();
}
void PAGE_LAYOUT_READER_PARSER::parsePolyOutline( WORKSHEET_DATAITEM_POLYPOLYGON * aItem )
throw( IO_ERROR, PARSE_ERROR )
{
DPOINT corner;
T token;
while( ( token = NextTok() ) != T_RIGHT )
{
if( token == T_EOF)
break;
if( token == T_LEFT )
token = NextTok();
switch( token )
{
case T_xy:
corner.x = parseDouble();
corner.y = parseDouble();
aItem->AppendCorner( corner );
NeedRIGHT();
break;
default:
Unexpected( CurText() );
break;
}
}
}
void PAGE_LAYOUT_READER_PARSER::readOption( WORKSHEET_DATAITEM * aItem )
throw( IO_ERROR, PARSE_ERROR )
{
T token;
while( ( token = NextTok() ) != T_RIGHT )
{
if( token == T_EOF)
break;
switch( token )
{
case T_page1only:
aItem->SetPage1Option( 1 );
break;
case T_notonpage1:
aItem->SetPage1Option( -1 );
break;
default:
Unexpected( CurText() );
break;
}
}
}
void PAGE_LAYOUT_READER_PARSER::parseGraphic( WORKSHEET_DATAITEM * aItem )
throw( IO_ERROR, PARSE_ERROR )
{
T token;
while( ( token = NextTok() ) != T_RIGHT )
{
if( token == T_EOF)
break;
if( token == T_LEFT )
token = NextTok();
switch( token )
{
case T_comment:
NeedSYMBOLorNUMBER();
aItem->m_Info = FromUTF8();
NeedRIGHT();
break;
case T_option:
readOption( aItem );
break;
case T_name:
NeedSYMBOLorNUMBER();
aItem->m_Name = FromUTF8();
NeedRIGHT();
break;
case T_start:
parseCoordinate( aItem->m_Pos );
break;
case T_end:
parseCoordinate( aItem->m_End );
break;
case T_repeat:
aItem->m_RepeatCount = parseInt( -1, 100 );
NeedRIGHT();
break;
case T_incrx:
aItem->m_IncrementVector.x = parseDouble();
NeedRIGHT();
break;
case T_incry:
aItem->m_IncrementVector.y = parseDouble();
NeedRIGHT();
break;
case T_linewidth:
aItem->m_LineWidth = parseDouble();
NeedRIGHT();
break;
default:
Unexpected( CurText() );
break;
}
}
}
void PAGE_LAYOUT_READER_PARSER::parseText( WORKSHEET_DATAITEM_TEXT* aItem )
throw( IO_ERROR, PARSE_ERROR )
{
T token;
while( ( token = NextTok() ) != T_RIGHT )
{
if( token == T_EOF)
break;
if( token == T_LEFT )
token = NextTok();
switch( token )
{
case T_comment:
NeedSYMBOLorNUMBER();
aItem->m_Info = FromUTF8();
NeedRIGHT();
break;
case T_option:
readOption( aItem );
break;
case T_name:
NeedSYMBOLorNUMBER();
aItem->m_Name = FromUTF8();
NeedRIGHT();
break;
case T_pos:
parseCoordinate( aItem->m_Pos );
break;
case T_repeat:
aItem->m_RepeatCount = parseInt( -1, 100 );
NeedRIGHT();
break;
case T_incrx:
aItem->m_IncrementVector.x = parseDouble();
NeedRIGHT();
break;
case T_incry:
aItem->m_IncrementVector.y = parseDouble();
NeedRIGHT();
break;
case T_incrlabel:
aItem->m_IncrementLabel = parseInt(INT_MIN, INT_MAX);
NeedRIGHT();
break;
case T_maxlen:
aItem->m_BoundingBoxSize.x = parseDouble();
NeedRIGHT();
break;
case T_maxheight:
aItem->m_BoundingBoxSize.y = parseDouble();
NeedRIGHT();
break;
case T_font:
while( ( token = NextTok() ) != T_RIGHT )
{
if( token == T_EOF)
break;
switch( token )
{
case T_LEFT:
break;
case T_bold:
aItem->SetBold( true );
break;
case T_italic:
aItem->SetItalic( true );
break;
case T_size:
aItem->m_TextSize.x = parseDouble();
aItem->m_TextSize.y = parseDouble();
NeedRIGHT();
break;
case T_linewidth:
aItem->m_LineWidth = parseDouble();
NeedRIGHT();
break;
default:
Unexpected( CurText() );
break;
}
}
break;
case T_justify:
while( ( token = NextTok() ) != T_RIGHT )
{
if( token == T_EOF)
break;
switch( token )
{
case T_center:
aItem->m_Hjustify = GR_TEXT_HJUSTIFY_CENTER;
aItem->m_Vjustify = GR_TEXT_VJUSTIFY_CENTER;
break;
case T_left:
aItem->m_Hjustify = GR_TEXT_HJUSTIFY_LEFT;
break;
case T_right:
aItem->m_Hjustify = GR_TEXT_HJUSTIFY_RIGHT;
break;
case T_top:
aItem->m_Vjustify = GR_TEXT_VJUSTIFY_TOP;
break;
case T_bottom:
aItem->m_Vjustify = GR_TEXT_VJUSTIFY_BOTTOM;
break;
default:
Unexpected( CurText() );
break;
}
}
break;
case T_rotate:
aItem->m_Orient = parseDouble();
NeedRIGHT();
break;
default:
Unexpected( CurText() );
break;
}
}
}
// parse an expression like " 25 1 ltcorner)"
void PAGE_LAYOUT_READER_PARSER::parseCoordinate( POINT_COORD& aCoord)
throw( IO_ERROR, PARSE_ERROR )
{
T token;
aCoord.m_Pos.x = parseDouble();
aCoord.m_Pos.y = parseDouble();
while( ( token = NextTok() ) != T_RIGHT )
{
switch( token )
{
case T_ltcorner:
aCoord.m_Anchor = LT_CORNER; // left top corner
break;
case T_lbcorner:
aCoord.m_Anchor = LB_CORNER; // left bottom corner
break;
case T_rbcorner:
aCoord.m_Anchor = RB_CORNER; // right bottom corner
break;
case T_rtcorner:
aCoord.m_Anchor = RT_CORNER; // right top corner
break;
default:
Unexpected( CurText() );
break;
}
}
}
int PAGE_LAYOUT_READER_PARSER::parseInt( int aMin, int aMax )
{
T token = NextTok();
if( token != T_NUMBER )
Expecting( T_NUMBER );
int val = atoi( CurText() );
if( val < aMin )
val = aMin;
else if( val > aMax )
val = aMax;
return val;
}
double PAGE_LAYOUT_READER_PARSER::parseDouble()
{
T token = NextTok();
if( token != T_NUMBER )
Expecting( T_NUMBER );
double val = strtod( CurText(), NULL );
return val;
}
// defaultPageLayout is the default page layout description
// using the S expr.
// see page_layout_default_shape.cpp
extern const char defaultPageLayout[];
void WORKSHEET_LAYOUT::SetDefaultLayout()
{
ClearList();
PAGE_LAYOUT_READER_PARSER lp_parser( defaultPageLayout, wxT( "default page" ) );
try
{
lp_parser.Parse( this );
}
catch( IO_ERROR ioe )
{
wxLogMessage( ioe.errorText );
}
}
#include <wx/file.h>
// SetLayout() try to load a custom layout file,
// currently defined by the environment variable KICAD_WKSFILE
// (a *.kicad_wks file).
// if does not exists, loads the default page layout.
void WORKSHEET_LAYOUT::SetPageLayout( const wxString& aFullFileName, bool Append )
{
wxString fullFileName = aFullFileName;
if( !Append )
{
fullFileName = MakeFullFileName( aFullFileName );
if( fullFileName.IsEmpty() )
wxGetEnv( wxT( "KICAD_WKSFILE" ), &fullFileName );
if( fullFileName.IsEmpty() || !wxFileExists( fullFileName ) )
{
#if 0
if( !fullFileName.IsEmpty() )
{
wxLogMessage( wxT("Page layout file <%s> not found"),
fullFileName.GetData() );
}
#endif
SetDefaultLayout();
return;
}
}
wxFile wksFile( fullFileName );
if( ! wksFile.IsOpened() )
{
if( !Append )
SetDefaultLayout();
return;
}
int filelen = wksFile.Length();
char * buffer = new char[filelen+10];
if( wksFile.Read( buffer, filelen ) != filelen )
wxLogMessage( _("The file <%s> was not fully read"),
fullFileName.GetData() );
else
{
buffer[filelen]=0;
if( ! Append )
ClearList();
PAGE_LAYOUT_READER_PARSER lp_parser( buffer, fullFileName );
try
{
lp_parser.Parse( this );
}
catch( IO_ERROR ioe )
{
wxLogMessage( ioe.errorText );
}
}
delete[] buffer;
}

View File

@ -0,0 +1,40 @@
page_layout
setup
linewidth
textlinewidth
textsize
comment
option
page1only
notonpage1
line
rect
polygon
tbtext
ltcorner
lbcorner
rbcorner
rtcorner
name
pos
start
end
pts
xy
maxlen
maxheight
font
bold
italic
size
justify
left
center
right
top
bottom
rotate
repeat
incrx
incry
incrlabel

View File

@ -0,0 +1,232 @@
/**
* @file title_block_shape.cpp
* @brief description of graphic items and texts to build a title block
*/
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 1992-2013 Jean-Pierre Charras <jp.charras at wanadoo.fr>.
* Copyright (C) 1992-2013 KiCad Developers, see change_log.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
*/
/*
* the class WORKSHEET_DATAITEM (and WORKSHEET_DATAITEM_TEXT) defines
* a basic shape of a page layout ( frame references and title block )
* Basic shapes are line, rect and texts
* the WORKSHEET_DATAITEM coordinates units is the mm, and are relative to
* one of 4 page corners.
*
* These items cannot be drawn or plot "as this". they should be converted
* to a "draw list" (WS_DRAW_ITEM_BASE and derived items)
* The list of these items is stored in a WORKSHEET_LAYOUT instance.
*
* When building the draw list:
* the WORKSHEET_LAYOUT is used to create a WS_DRAW_ITEM_LIST
* coordinates are converted to draw/plot coordinates.
* texts are expanded if they contain format symbols.
* Items with m_RepeatCount > 1 are created m_RepeatCount times
*
* the WORKSHEET_LAYOUT is created only once.
* the WS_DRAW_ITEM_LIST is created each time the page layout is plot/drawn
*
* the WORKSHEET_LAYOUT instance is created from a S expression which
* describes the page layout (can be the default page layout or a custom file).
*/
#include <fctsys.h>
#include <drawtxt.h>
#include <worksheet.h>
#include <class_title_block.h>
#include <worksheet_shape_builder.h>
#include <class_worksheet_dataitem.h>
void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
const PAGE_INFO& aPageInfo,
const TITLE_BLOCK& aTitleBlock,
EDA_COLOR_T aColor, EDA_COLOR_T aAltColor )
{
#define milsTomm (25.4/1000)
m_titleBlock = &aTitleBlock;
m_paperFormat = &aPageInfo.GetType();
wxPoint LTmargin( aPageInfo.GetLeftMarginMils(), aPageInfo.GetTopMarginMils() );
wxPoint RBmargin( aPageInfo.GetRightMarginMils(), aPageInfo.GetBottomMarginMils() );
SetMargins( LTmargin, RBmargin );
SetPageSize( aPageInfo.GetSizeMils() );
WORKSHEET_LAYOUT& pglayout = WORKSHEET_LAYOUT::GetTheInstance();
// Build the basic layout shape, if the layout list is empty
if( pglayout.GetCount() == 0 && !pglayout.VoidListAllowed() )
pglayout.SetPageLayout();
WORKSHEET_DATAITEM::m_WSunits2Iu = m_milsToIu / milsTomm;
WORKSHEET_DATAITEM::m_Color = aColor; // the default color to draw items
WORKSHEET_DATAITEM::m_AltColor = aAltColor; // an alternate color to draw items
// Left top corner position
DPOINT lt_corner;
lt_corner.x = m_LTmargin.x;
lt_corner.y = m_LTmargin.y;
WORKSHEET_DATAITEM::m_LT_Corner = lt_corner * milsTomm;
// Right bottom corner position
DPOINT rb_corner;
rb_corner.x = m_pageSize.x - m_RBmargin.x;
rb_corner.y = m_pageSize.y - m_RBmargin.y;
WORKSHEET_DATAITEM::m_RB_Corner = rb_corner * milsTomm;
WS_DRAW_ITEM_TEXT* gtext;
int pensize;
for( unsigned ii = 0; ; ii++ )
{
WORKSHEET_DATAITEM* wsItem = pglayout.GetItem( ii );
if( wsItem == NULL )
break;
// Generate it only if the page option allows this
if( wsItem->GetPage1Option() < 0 // Not on page 1
&& m_sheetNumber <= 1 )
continue;
if( wsItem->GetPage1Option() > 0 // Only on page 1
&& m_sheetNumber > 1 )
continue;
EDA_COLOR_T color = wsItem->GetItemColor();
pensize = wsItem->GetPenSizeUi();
switch( wsItem->GetType() )
{
case WORKSHEET_DATAITEM::WS_TEXT:
{
WORKSHEET_DATAITEM_TEXT * wsText = (WORKSHEET_DATAITEM_TEXT*)wsItem;
if( wsText->m_SpecialMode )
wsText->m_FullText = wsText->m_TextBase;
else
wsText->m_FullText = BuildFullText( wsText->m_TextBase );
if( wsText->m_FullText.IsEmpty() )
break;
if( pensize == 0 )
pensize = m_penSize;
wsText->SetConstrainedTextSize();
wxSize textsize;
textsize.x = KiROUND( wsText->m_ConstrainedTextSize.x
* WORKSHEET_DATAITEM::m_WSunits2Iu );
textsize.y = KiROUND( wsText->m_ConstrainedTextSize.y
* WORKSHEET_DATAITEM::m_WSunits2Iu );
if( wsText->IsBold())
pensize = GetPenSizeForBold( std::min( textsize.x, textsize.y ) );
for( int jj = 0; jj < wsText->m_RepeatCount; jj++)
{
if( jj && ! wsText->IsInsidePage( jj ) )
continue;
Append( gtext = new WS_DRAW_ITEM_TEXT( wsText, wsText->m_FullText,
wsText->GetStartPosUi( jj ),
textsize,
pensize, color,
wsText->IsItalic(),
wsText->IsBold() ) );
wsText->TransfertSetupToGraphicText( gtext );
// Increment label for the next text
if( wsText->m_RepeatCount > 1 )
wsText->IncrementLabel( (jj+1)*wsText->m_IncrementLabel);
}
}
break;
case WORKSHEET_DATAITEM::WS_SEGMENT:
if( pensize == 0 )
pensize = m_penSize;
for( int jj = 0; jj < wsItem->m_RepeatCount; jj++ )
{
if( jj && ! wsItem->IsInsidePage( jj ) )
continue;
Append( new WS_DRAW_ITEM_LINE( wsItem, wsItem->GetStartPosUi( jj ),
wsItem->GetEndPosUi( jj ),
pensize, color ) );
}
break;
case WORKSHEET_DATAITEM::WS_RECT:
if( pensize == 0 )
pensize = m_penSize;
for( int jj = 0; jj < wsItem->m_RepeatCount; jj++ )
{
if( jj && ! wsItem->IsInsidePage( jj ) )
break;
Append( new WS_DRAW_ITEM_RECT( wsItem, wsItem->GetStartPosUi( jj ),
wsItem->GetEndPosUi( jj ),
pensize, color ) );
}
break;
case WORKSHEET_DATAITEM::WS_POLYPOLYGON:
{
WORKSHEET_DATAITEM_POLYPOLYGON * wspoly =
(WORKSHEET_DATAITEM_POLYPOLYGON*) wsItem;
for( int jj = 0; jj < wsItem->m_RepeatCount; jj++ )
{
if( jj && ! wsItem->IsInsidePage( jj ) )
continue;
for( int kk = 0; kk < wspoly->GetPolyCount(); kk++ )
{
const bool fill = true;
WS_DRAW_ITEM_POLYGON* poly = new WS_DRAW_ITEM_POLYGON( wspoly,
wspoly->GetStartPosUi( jj ),
fill, pensize, color );
Append( poly );
// Create polygon outline
unsigned ist = wspoly->GetPolyIndexStart( kk );
unsigned iend = wspoly->GetPolyIndexEnd( kk );
while( ist <= iend )
poly->m_Corners.push_back(
wspoly->GetCornerPositionUi( ist++, jj ) );
}
}
}
break;
}
}
}

View File

@ -978,9 +978,7 @@ Ki_WorkSheetData WS_DopTop_Line6 =
#include <worksheet_shape_builder.h>
void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
const wxString& aPaperFormat,
const wxString& aFileName,
const wxString& aSheetPathHumanReadable,
const PAGE_INFO& aPageInfo,
const TITLE_BLOCK& aTitleBlock,
EDA_COLOR_T aLineColor, EDA_COLOR_T aTextColor )
{
@ -990,8 +988,14 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
Ki_WorkSheetData* WsItem;
wxSize size( TEXTSIZE * m_milsToIu, TEXTSIZE * m_milsToIu );
wxString msg;
wxString paperFormat = aPageInfo.GetType();
WS_DRAW_ITEM_TEXT* gtext;
wxPoint LTmargin( aPageInfo.GetLeftMarginMils(), aPageInfo.GetTopMarginMils() );
wxPoint RBmargin( aPageInfo.GetRightMarginMils(), aPageInfo.GetBottomMarginMils() );
SetMargins( LTmargin, RBmargin );
SetPageSize( aPageInfo.GetSizeMils() );
// Upper left corner
refx = m_LTmargin.x;
refy = m_LTmargin.y;
@ -1011,7 +1015,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
wxSize size3( TEXTSIZE * m_milsToIu * 3, TEXTSIZE * m_milsToIu * 3 );
// Draw the border.
Append( new WS_DRAW_ITEM_RECT(
Append( new WS_DRAW_ITEM_RECT( NULL,
wxPoint( refx * m_milsToIu, refy * m_milsToIu ),
wxPoint( xg * m_milsToIu, yg * m_milsToIu ),
lnWosn, aLineColor ) );
@ -1034,12 +1038,12 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
switch( WsItem->m_Type )
{
case WS_OSN:
Append( new WS_DRAW_ITEM_LINE( pos, end,
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
lnWosn, aLineColor ) );
break;
case WS_TONK:
Append( new WS_DRAW_ITEM_LINE( pos, end,
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
lnWtonk, aLineColor ) );
break;
@ -1048,11 +1052,11 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
if( !msg.IsEmpty() )
{
if( WsItem == &WS_Osn1_Text1 )
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
size0_8, m_penSize,
aLineColor ) );
else
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
size, m_penSize, aLineColor ) );
}
@ -1062,7 +1066,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
if( !msg.IsEmpty() )
{
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
size, m_penSize, aLineColor ) );
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
}
@ -1078,7 +1082,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
pos.y = ( refy - Mm2mils( 17.5 ) ) * m_milsToIu;
msg.Empty();
msg << m_sheetNumber;
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
size, m_penSize, aLineColor ) );
}
@ -1087,7 +1091,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
pos.y = ( refy - Mm2mils( 17.5 ) ) * m_milsToIu;
msg.Empty();
msg << m_sheetCount;
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
size, m_penSize, aLineColor ) );
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
@ -1105,7 +1109,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
pos.x = ( refx - Mm2mils( 25 ) ) * m_milsToIu;
pos.y = ( refy - Mm2mils( 7.5 ) ) * m_milsToIu;
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
sz, m_penSize, aLineColor ) );
}
@ -1211,7 +1215,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
for( unsigned curLn = 0; curLn < lines.Count(); curLn++ )
{
msg = lines[curLn];
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
sz, m_penSize, aTextColor ) );
pos.y += titleHeight * m_milsToIu;
}
@ -1231,7 +1235,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
pos.x = ( refx - Mm2mils( 60 ) ) * m_milsToIu;
pos.y = ( refy - Mm2mils( 47.5 ) ) * m_milsToIu;
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
Append( new WS_DRAW_ITEM_TEXT(NULL, msg, pos,
sz, m_penSize, aTextColor ) );
}
@ -1249,7 +1253,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
pos.x = ( refx - Mm2mils( 167.5 ) ) * m_milsToIu;
pos.y = ( refy - Mm2mils( 27.5 ) ) * m_milsToIu;
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
sz, m_penSize, aTextColor ) );
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
}
@ -1268,7 +1272,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
pos.x = ( refx - Mm2mils( 167 ) ) * m_milsToIu;
pos.y = ( refy - Mm2mils( 22.5 ) ) * m_milsToIu;
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
sz, m_penSize, aTextColor ) );
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
}
@ -1287,7 +1291,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
pos.x = ( refx - Mm2mils( 167 ) ) * m_milsToIu;
pos.y = ( refy - Mm2mils( 2.5 ) ) * m_milsToIu;
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
sz, m_penSize, aTextColor ) );
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
}
@ -1305,12 +1309,12 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
switch( WsItem->m_Type )
{
case WS_OSN:
Append( new WS_DRAW_ITEM_LINE( pos, end,
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
lnWosn, aLineColor ) );
break;
case WS_TONK:
Append( new WS_DRAW_ITEM_LINE( pos, end,
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
lnWtonk, aLineColor ) );
break;
@ -1319,11 +1323,11 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
if( !msg.IsEmpty() )
{
if( WsItem == &WS_Osn2a_Text1 )
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
size0_8, m_penSize,
aLineColor ) );
else
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
size, m_penSize, aLineColor ) );
}
@ -1333,7 +1337,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
if( !msg.IsEmpty() )
{
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
size, m_penSize,
aLineColor ) );
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
@ -1348,7 +1352,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
pos.y = ( refy - Mm2mils( 4 ) ) * m_milsToIu;
msg.Empty();
msg << m_sheetNumber;
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
size, m_penSize, aLineColor ) );
// Decimal number
@ -1365,7 +1369,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
pos.x = ( refx - Mm2mils( 65 ) ) * m_milsToIu;
pos.y = ( refy - Mm2mils( 7.5 ) ) * m_milsToIu;
Append( new WS_DRAW_ITEM_TEXT( msg, pos,
Append( new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
sz, m_penSize, aTextColor ) );
}
}
@ -1374,8 +1378,8 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
pos.x = ( refx - Mm2mils( 23 ) ) * m_milsToIu;
pos.y = ( refy + Mm2mils( 2.5 ) ) * m_milsToIu;
msg.Empty();
msg << aPaperFormat;
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
msg << paperFormat;
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
size, m_penSize, aLineColor ) );
gtext->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
@ -1397,7 +1401,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
switch( WsItem->m_Type )
{
case WS_OSN:
Append( new WS_DRAW_ITEM_LINE( pos, end,
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
lnWosn, aLineColor ) );
break;
@ -1405,7 +1409,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
if( !msg.IsEmpty() )
{
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
size, m_penSize, aLineColor ) );
gtext->SetOrientation( TEXT_ORIENT_VERT );
}
@ -1414,7 +1418,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
}
}
if( aPaperFormat == PAGE_INFO::A4 || m_pageSize.x > m_pageSize.y ) // A4 or Landscape
if( paperFormat == PAGE_INFO::A4 || m_pageSize.x > m_pageSize.y ) // A4 or Landscape
{
// Center - left top corner
refx = m_LTmargin.x;
@ -1434,12 +1438,12 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
switch( WsItem->m_Type )
{
case WS_OSN:
Append( new WS_DRAW_ITEM_LINE( pos, end,
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
lnWosn, aLineColor ) );
break;
case WS_TONK:
Append( new WS_DRAW_ITEM_LINE( pos, end,
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
lnWtonk, aLineColor ) );
break;
}
@ -1459,7 +1463,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
pos.x = ( refx + Mm2mils( 35 ) ) * m_milsToIu;
pos.y = ( refy + Mm2mils( 7 ) ) * m_milsToIu;
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
sz, m_penSize, aTextColor ) );
gtext->SetOrientation( 1800.0 );
}
@ -1485,12 +1489,12 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
switch( WsItem->m_Type )
{
case WS_OSN:
Append( new WS_DRAW_ITEM_LINE( pos, end,
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
lnWosn, aLineColor ) );
break;
case WS_TONK:
Append( new WS_DRAW_ITEM_LINE( pos, end,
Append( new WS_DRAW_ITEM_LINE( NULL, pos, end,
lnWtonk, aLineColor ) );
break;
}
@ -1510,7 +1514,7 @@ void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList(
pos.x = ( refx - Mm2mils( 7 ) ) * m_milsToIu;
pos.y = ( refy + Mm2mils( 35 ) ) * m_milsToIu;
Append( gtext = new WS_DRAW_ITEM_TEXT( msg, pos,
Append( gtext = new WS_DRAW_ITEM_TEXT( NULL, msg, pos,
sz, m_penSize, aTextColor ) );
gtext->SetOrientation( TEXT_ORIENT_VERT );
}

View File

@ -46,6 +46,7 @@ const wxString GerberFileExtension( wxT( "pho" ) );
const wxString LegacyPcbFileExtension( wxT( "brd" ) );
const wxString KiCadPcbFileExtension( wxT( "kicad_pcb" ) );
const wxString PageLayoutDescrFileExtension( wxT( "kicad_wks" ) );
const wxString PdfFileExtension( wxT( "pdf" ) );
const wxString MacrosFileExtension( wxT( "mcr" ) );
@ -81,7 +82,7 @@ const wxString EagleFootprintLibPathWildcard( _( "Eagle ver. 6.x XML library fil
const wxString GedaPcbFootprintLibFileWildcard( _( "Geda PCB footprint library file (*.fp)|*.fp" ) );
const wxString MacrosFileWildcard( _( "KiCad recorded macros (*.mcr)|*.mcr" ) );
const wxString ComponentFileExtensionWildcard( _( "Component-footprint link file (*.cmp)|*cmp" ) );
const wxString PageLayoutDescrFileWildcard( _( "Page layout descr file (*.kicad_wks)|*kicad_wks" ) );
// generic:
const wxString AllFilesWildcard( _( "All files (*)|*" ) );

View File

@ -46,60 +46,6 @@
static const wxString productName = wxT( "KiCad E.D.A. " );
/* Draws the item list crated by BuildWorkSheetGraphicList
* aClipBox = the clipping rect, or NULL if no clipping
* aDC = the current Device Context
*/
void WS_DRAW_ITEM_LIST::Draw( EDA_RECT* aClipBox, wxDC* aDC )
{
for( WS_DRAW_ITEM_BASE* item = GetFirst(); item; item = GetNext() )
{
switch( item->GetType() )
{
case WS_DRAW_ITEM_BASE::wsg_line:
{
WS_DRAW_ITEM_LINE* line = (WS_DRAW_ITEM_LINE*) item;
GRLine( aClipBox, aDC,
line->GetStart(), line->GetEnd(),
line->GetPenWidth(), line->GetColor() );
}
break;
case WS_DRAW_ITEM_BASE::wsg_rect:
{
WS_DRAW_ITEM_RECT* rect = (WS_DRAW_ITEM_RECT*) item;
GRRect( aClipBox, aDC,
rect->GetStart().x, rect->GetStart().y,
rect->GetEnd().x, rect->GetEnd().y,
rect->GetPenWidth(), rect->GetColor() );
}
break;
case WS_DRAW_ITEM_BASE::wsg_text:
{
WS_DRAW_ITEM_TEXT* text = (WS_DRAW_ITEM_TEXT*) item;
DrawGraphicText( aClipBox, aDC, text->GetTextPosition(),
text->GetColor(), text->GetText(),
text->GetOrientation(), text->GetSize(),
text->GetHorizJustify(), text->GetVertJustify(),
text->GetPenWidth(), text->IsItalic(), text->IsBold() );
}
break;
case WS_DRAW_ITEM_BASE::wsg_poly:
{
WS_DRAW_ITEM_POLYGON* poly = (WS_DRAW_ITEM_POLYGON*) item;
GRPoly( aClipBox, aDC,
poly->m_Corners.size(), &poly->m_Corners[0],
poly->IsFilled() ? FILLED_SHAPE : NO_FILL,
poly->GetPenWidth(),
poly->GetColor(), poly->GetColor() );
}
break;
}
}
}
void DrawPageLayout( wxDC* aDC, EDA_RECT* aClipBox,
const PAGE_INFO& aPageInfo,
const wxString &aFullSheetName,
@ -112,19 +58,14 @@ void DrawPageLayout( wxDC* aDC, EDA_RECT* aClipBox,
GRSetDrawMode( aDC, GR_COPY );
WS_DRAW_ITEM_LIST drawList;
wxPoint LTmargin( aPageInfo.GetLeftMarginMils(), aPageInfo.GetTopMarginMils() );
wxPoint RBmargin( aPageInfo.GetRightMarginMils(), aPageInfo.GetBottomMarginMils() );
wxSize pagesize = aPageInfo.GetSizeMils();
drawList.SetMargins( LTmargin, RBmargin );
drawList.SetPenSize( aPenWidth );
drawList.SetMilsToIUfactor( aScalar );
drawList.SetPageSize( pagesize );
drawList.SetSheetNumber( aSheetNumber );
drawList.SetSheetCount( aSheetCount );
drawList.SetFileName( aFileName );
drawList.SetSheetName( aFullSheetName );
drawList.BuildWorkSheetGraphicList(
aPageInfo.GetType(), aFullSheetName, aFileName,
drawList.BuildWorkSheetGraphicList( aPageInfo,
aTitleBlock, aColor, aAltColor );
// Draw item list
@ -154,7 +95,7 @@ void EDA_DRAW_FRAME::DrawWorkSheet( wxDC* aDC, BASE_SCREEN* aScreen, int aLineWi
EDA_COLOR_T color = RED;
DrawPageLayout( aDC, m_canvas->GetClipBox(), pageInfo,
aFilename, GetScreenDesc(), t_block,
GetScreenDesc(), aFilename, t_block,
aScreen->m_NumberOfScreens, aScreen->m_ScreenNumber,
aLineWidth, aScalar, color, color );
}
@ -162,7 +103,7 @@ void EDA_DRAW_FRAME::DrawWorkSheet( wxDC* aDC, BASE_SCREEN* aScreen, int aLineWi
wxString EDA_DRAW_FRAME::GetScreenDesc()
{
// Virtual function, in basic function, returns
// Virtual function. In basic class, returns
// an empty string.
return wxEmptyString;
}

View File

@ -1710,3 +1710,25 @@ void LIB_COMPONENT::AddAlias( const wxString& aName )
m_aliases.push_back( new LIB_ALIAS( aName, this ) );
}
/** Set the separator char between the subpart id and the reference
* 0 (no separator) or '.' , '-' and '_'
* and the ascii char value to calculate the subpart symbol id from the part number:
* 'A' or '1' only are allowed. (to print U1.A or U1.1)
* if this is a digit, a number is used as id symbol
* Note also if the subpart symbol is a digit, the separator cannot be null.
* @param aSep = the separator symbol (0 (no separator) or '.' , '-' and '_')
* @param aFirstId = the Id of the first part ('A' or '1')
*/
void LIB_COMPONENT::SetSubpartIdNotation( int aSep, int aFirstId )
{
m_subpartFirstId = 'A';
m_subpartIdSeparator = 0;
if( aSep == '.' || aSep == '-' || aSep == '_' )
m_subpartIdSeparator = aSep;
if( aFirstId == '1' && aSep != 0 )
m_subpartFirstId = aFirstId;
}

View File

@ -206,13 +206,14 @@ class LIB_COMPONENT : public EDA_ITEM
LIB_ALIASES m_aliases; ///< List of alias object pointers associated with the
///< component.
CMP_LIBRARY* m_library; ///< Library the component belongs to if any.
static int m_subpartIdSeparator; ///< the separator char between
static int m_subpartIdSeparator; ///< the separator char between
///< the subpart id and the reference
///< like U1A ( m_subpartIdSeparator = 0 ) or U1.A or U1-A
static int m_subpartFirstId; ///< the ascii char value to calculate the subpart symbol id
static int m_subpartFirstId; ///< the ascii char value to calculate the subpart symbol id
///< from the part number: only 'A', 'a' or '1' can be used,
///< other values have no sense.
private:
void deleteAllFields();
public:
@ -659,9 +660,28 @@ public:
// Accessors to sub ref parameters
static int GetSubpartIdSeparator() { return m_subpartIdSeparator; }
static void SetSubpartIdSeparator( int aSep ) { m_subpartIdSeparator = aSep; }
/** return a reference to m_subpartIdSeparator,
* only for read/save setting functions
*/
static int* SubpartIdSeparatorPtr() { return &m_subpartIdSeparator; }
static int GetSubpartFirstId() { return m_subpartFirstId; }
static void SetSubpartFirstId( int aFirstId ) { m_subpartFirstId = aFirstId; }
/** return a reference to m_subpartFirstId, only for read/save setting functions
*/
static int* SubpartFirstIdPtr() { return &m_subpartFirstId; }
/** Set the separator char between the subpart id and the reference
* 0 (no separator) or '.' , '-' and '_'
* and the ascii char value to calculate the subpart symbol id from the part number:
* 'A' or '1' only are allowed. (to print U1.A or U1.1)
* if this is a digit, a number is used as id symbol
* Note also if the subpart symbol is a digit, the separator cannot be null.
* @param aSep = the separator symbol (0 (no separator) or '.' , '-' and '_')
* @param aFirstId = the Id of the first part ('A' or '1')
*/
static void SetSubpartIdNotation( int aSep, int aFirstId );
/**
* Set or clear the alternate body style (DeMorgan) for the component.

View File

@ -33,7 +33,6 @@
#include <wxEeschemaStruct.h>
#include <general.h>
//#include <protos.h>
#include <netlist.h>
#include <libeditframe.h>
#include <viewlib_frame.h>
@ -221,7 +220,8 @@ void DIALOG_EESCHEMA_CONFIG::OnOkClick( wxCommandEvent& event )
LIB_EDIT_FRAME::EnsureActiveLibExists();
}
m_Parent->SaveProjectFile();
m_Parent->SaveProjectSettings( false );
EndModal( wxID_OK );
}

View File

@ -51,15 +51,56 @@ void DIALOG_EESCHEMA_OPTIONS::SetUnits( const wxArrayString& units, int select )
void DIALOG_EESCHEMA_OPTIONS::SetRefIdSeparator( wxChar aSep, wxChar aFirstId)
{
if( aSep == 0 )
m_textCtrlSeparatorRefId->SetValue( _("None") );
else
m_textCtrlSeparatorRefId->SetValue( aSep );
// m_choiceSeparatorRefId displays one of
// "A" ".A" "-A" "_A" ".1" "-1" "_1" option
m_textCtrlPartFirstId->SetValue( aFirstId );
int sel = 0;
switch( aSep )
{
default:
case 0:
aFirstId = 'A'; // cannot use a number without separator
break;
case '.':
sel = 1;
break;
case '-':
sel = 2;
break;
case '_':
sel = 3;
break;
}
if( aFirstId == '1' )
sel = 4;
m_choiceSeparatorRefId->SetSelection( sel );
}
void DIALOG_EESCHEMA_OPTIONS::GetRefIdSeparator( int& aSep, int& aFirstId)
{
// m_choiceSeparatorRefId displays one of
// "A" ".A" "-A" "_A" ".1" "-1" "_1" option
aFirstId = 'A';
switch( m_choiceSeparatorRefId->GetSelection() )
{
default:
case 0: aSep = 0; break;
case 1: aSep = '.'; break;
case 2: aSep = '-'; break;
case 3: aSep = '_'; break;
case 4: aFirstId = '1'; aSep = '.'; break;
case 5: aFirstId = '1'; aSep = '-'; break;
case 6: aFirstId = '1'; aSep = '_'; break;
}
}
void DIALOG_EESCHEMA_OPTIONS::SetGridSizes( const GRIDS& grid_sizes, int grid_id )
{
wxASSERT( grid_sizes.size() > 0 );

View File

@ -76,6 +76,7 @@ public:
int GetAutoSaveInterval() const { return m_spinAutoSaveInterval->GetValue(); }
void SetRefIdSeparator( wxChar aSep, wxChar aFirstId);
void GetRefIdSeparator( int& aSep, int& aFirstId);
void SetShowGrid( bool show ) { m_checkShowGrid->SetValue( show ); }
bool GetShowGrid( void ) { return m_checkShowGrid->GetValue(); }

View File

@ -35,7 +35,7 @@ DIALOG_EESCHEMA_OPTIONS_BASE::DIALOG_EESCHEMA_OPTIONS_BASE( wxWindow* parent, wx
bSizer3 = new wxBoxSizer( wxVERTICAL );
wxFlexGridSizer* fgSizer1;
fgSizer1 = new wxFlexGridSizer( 11, 3, 0, 0 );
fgSizer1 = new wxFlexGridSizer( 10, 3, 0, 0 );
fgSizer1->AddGrowableCol( 0 );
fgSizer1->AddGrowableCol( 1 );
fgSizer1->AddGrowableCol( 2 );
@ -143,22 +143,15 @@ DIALOG_EESCHEMA_OPTIONS_BASE::DIALOG_EESCHEMA_OPTIONS_BASE( wxWindow* parent, wx
m_staticText23->Wrap( -1 );
fgSizer1->Add( m_staticText23, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
m_staticText26 = new wxStaticText( m_panel1, wxID_ANY, _("Separator ref/part id:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText26 = new wxStaticText( m_panel1, wxID_ANY, _("part id notation:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText26->Wrap( -1 );
fgSizer1->Add( m_staticText26, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
m_textCtrlSeparatorRefId = new wxTextCtrl( m_panel1, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY );
fgSizer1->Add( m_textCtrlSeparatorRefId, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 3 );
fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 );
m_staticText27 = new wxStaticText( m_panel1, wxID_ANY, _("Part first Id:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText27->Wrap( -1 );
fgSizer1->Add( m_staticText27, 0, wxALL, 5 );
m_textCtrlPartFirstId = new wxTextCtrl( m_panel1, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY );
fgSizer1->Add( m_textCtrlPartFirstId, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 3 );
wxString m_choiceSeparatorRefIdChoices[] = { _("A"), _(".A"), _("-A"), _("_A"), _(".1"), _("-1"), _("_1") };
int m_choiceSeparatorRefIdNChoices = sizeof( m_choiceSeparatorRefIdChoices ) / sizeof( wxString );
m_choiceSeparatorRefId = new wxChoice( m_panel1, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceSeparatorRefIdNChoices, m_choiceSeparatorRefIdChoices, 0 );
m_choiceSeparatorRefId->SetSelection( 0 );
fgSizer1->Add( m_choiceSeparatorRefId, 0, wxALL|wxEXPAND, 5 );
fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 );

View File

@ -42,7 +42,7 @@
<property name="minimum_size"></property>
<property name="name">DIALOG_EESCHEMA_OPTIONS_BASE</property>
<property name="pos"></property>
<property name="size">432,560</property>
<property name="size">508,560</property>
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
<property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
<property name="title">Schematic Editor Options</property>
@ -288,7 +288,7 @@
<property name="name">fgSizer1</property>
<property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
<property name="permission">none</property>
<property name="rows">11</property>
<property name="rows">10</property>
<property name="vgap">0</property>
<object class="sizeritem" expanded="0">
<property name="border">3</property>
@ -2455,7 +2455,7 @@
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Separator reference/part id:</property>
<property name="label">part id notation:</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
@ -2507,10 +2507,10 @@
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">3</property>
<property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxTextCtrl" expanded="1">
<object class="wxChoice" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@ -2524,6 +2524,7 @@
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="choices">&quot;A&quot; &quot;.A&quot; &quot;-A&quot; &quot;_A&quot; &quot;.1&quot; &quot;-1&quot; &quot;_1&quot;</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
@ -2541,113 +2542,11 @@
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_textCtrlSeparatorRefId</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxTE_READONLY</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnText"></event>
<event name="OnTextEnter"></event>
<event name="OnTextMaxLen"></event>
<event name="OnTextURL"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="spacer" expanded="1">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Part first Id:</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_staticText27</property>
<property name="name">m_choiceSeparatorRefId</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
@ -2655,104 +2554,22 @@
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="selection">0</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">3</property>
<property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxTextCtrl" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_textCtrlPartFirstId</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxTE_READONLY</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnChoice"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
@ -2774,10 +2591,6 @@
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnText"></event>
<event name="OnTextEnter"></event>
<event name="OnTextMaxLen"></event>
<event name="OnTextURL"></event>
<event name="OnUpdateUI"></event>
</object>
</object>

View File

@ -22,7 +22,6 @@ class DIALOG_SHIM;
#include <wx/settings.h>
#include <wx/choice.h>
#include <wx/spinctrl.h>
#include <wx/textctrl.h>
#include <wx/sizer.h>
#include <wx/statline.h>
#include <wx/checkbox.h>
@ -30,6 +29,7 @@ class DIALOG_SHIM;
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/textctrl.h>
#include <wx/notebook.h>
#include <wx/button.h>
#include <wx/dialog.h>
@ -84,9 +84,7 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM
wxSpinCtrl* m_spinAutoSaveInterval;
wxStaticText* m_staticText23;
wxStaticText* m_staticText26;
wxTextCtrl* m_textCtrlSeparatorRefId;
wxStaticText* m_staticText27;
wxTextCtrl* m_textCtrlPartFirstId;
wxChoice* m_choiceSeparatorRefId;
wxStaticLine* m_staticline1;
wxCheckBox* m_checkShowGrid;
wxCheckBox* m_checkShowHiddenPins;
@ -125,7 +123,7 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM
public:
DIALOG_EESCHEMA_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Schematic Editor Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 432,560 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
DIALOG_EESCHEMA_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Schematic Editor Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 508,560 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_EESCHEMA_OPTIONS_BASE();
};

View File

@ -123,21 +123,6 @@ bool EDA_APP::OnInit()
for( int ii = 0; ii < NB_SCH_LAYERS; ii++ )
SetLayerColor( DARKGRAY, ii );
#ifdef KICAD_GOST
// These options will be user configurable in the future,
// and not specific to GOST users
// the separator char between the subpart id and the reference
// 0 (no separator) or '.' or some other character
LIB_COMPONENT::SetSubpartIdSeparator( '.' );
// the ascii char value to calculate the subpart symbol id from the part number:
// 'A' or '1' usually. (to print U1.A or U1.1)
// if this is a digit, a number is used as id symbol
LIB_COMPONENT::SetSubpartFirstId( '1' );
// Default diameter of the junction symbol
SCH_JUNCTION::SetSymbolSize( 32 );
#endif
// read current setup and reopen last directory if no filename to open in
// command line
bool reopenLastUsedDirectory = argc == 1;

View File

@ -39,6 +39,7 @@
#include <hotkeys.h>
#include <sch_sheet.h>
#include <class_libentry.h>
#include <worksheet_shape_builder.h>
#include <dialog_hotkeys_editor.h>
@ -139,7 +140,7 @@ void LIB_EDIT_FRAME::Process_Config( wxCommandEvent& event )
switch( id )
{
case ID_CONFIG_SAVE:
schFrame->SaveProjectFile();
schFrame->SaveProjectSettings( false );
break;
case ID_CONFIG_READ:
@ -207,7 +208,7 @@ void SCH_EDIT_FRAME::Process_Config( wxCommandEvent& event )
switch( id )
{
case ID_CONFIG_SAVE:
SaveProjectFile();
SaveProjectSettings( false );
break;
case ID_CONFIG_READ:
@ -303,6 +304,15 @@ void SCH_EDIT_FRAME::OnSetOptions( wxCommandEvent& event )
GetScreen()->SetGrid( grid_list[ (size_t) dlg.GetGridSelection() ].m_Size );
int sep, firstId;
dlg.GetRefIdSeparator( sep, firstId);
if( sep != (int)LIB_COMPONENT::GetSubpartIdSeparator() ||
firstId != (int)LIB_COMPONENT::GetSubpartFirstId() )
{
LIB_COMPONENT::SetSubpartIdNotation( sep, firstId );
SaveProjectSettings( true );
}
SetDefaultBusThickness( dlg.GetBusWidth() );
SetDefaultLineThickness( dlg.GetLineWidth() );
SetDefaultLabelSize( dlg.GetTextSize() );
@ -344,11 +354,21 @@ void SCH_EDIT_FRAME::OnSetOptions( wxCommandEvent& event )
}
PARAM_CFG_ARRAY& SCH_EDIT_FRAME::GetProjectFileParameters()
PARAM_CFG_ARRAY& SCH_EDIT_FRAME::GetProjectFileParametersList()
{
if( !m_projectFileParams.empty() )
return m_projectFileParams;
m_projectFileParams.push_back( new PARAM_CFG_FILENAME( wxT( "PageLayoutDescrFile" ),
&BASE_SCREEN::m_PageLayoutDescrFileName ) );
m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "SubpartIdSeparator" ),
LIB_COMPONENT::SubpartIdSeparatorPtr(),
IsGOST() ? '.' : 0, 0, 126 ) );
m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "SubpartFirstId" ),
LIB_COMPONENT::SubpartFirstIdPtr(),
IsGOST() ? '1' : 'A', '1', 'z' ) );
m_projectFileParams.push_back( new PARAM_CFG_FILENAME( wxT( "LibDir" ),
&m_userLibraryPath ) );
m_projectFileParams.push_back( new PARAM_CFG_LIBNAME_LIST( wxT( "LibName" ),
@ -395,13 +415,25 @@ bool SCH_EDIT_FRAME::LoadProjectFile( const wxString& aFileName, bool aForceRere
wxGetApp().RemoveLibraryPath( m_userLibraryPath );
if( !wxGetApp().ReadProjectConfig( fn.GetFullPath(), GROUP,
GetProjectFileParameters(),
GetProjectFileParametersList(),
!aForceReread ) )
{
m_componentLibFiles = liblist_tmp;
IsRead = false;
}
// Verify some values, because the config file can be edited by hand,
// and have bad values:
LIB_COMPONENT::SetSubpartIdNotation( LIB_COMPONENT::GetSubpartIdSeparator(),
LIB_COMPONENT::GetSubpartFirstId() );
// Load the page layout decr file, from the filename stored in
// BASE_SCREEN::m_PageLayoutDescrFileName, read in config project file
// If empty, the default descr is loaded
WORKSHEET_LAYOUT& pglayout = WORKSHEET_LAYOUT::GetTheInstance();
pglayout.SetPageLayout(BASE_SCREEN::m_PageLayoutDescrFileName);
// Load libraries.
// User library path takes precedent over default library search paths.
wxGetApp().InsertLibraryPath( m_userLibraryPath, 1 );
@ -418,7 +450,7 @@ bool SCH_EDIT_FRAME::LoadProjectFile( const wxString& aFileName, bool aForceRere
}
void SCH_EDIT_FRAME::SaveProjectFile()
void SCH_EDIT_FRAME::SaveProjectSettings( bool aAskForSave )
{
wxFileName fn;
@ -428,7 +460,21 @@ void SCH_EDIT_FRAME::SaveProjectFile()
if( !IsWritable( fn ) )
return;
wxGetApp().WriteProjectConfig( fn.GetFullPath(), GROUP, GetProjectFileParameters() );
if( aAskForSave )
{
wxFileDialog dlg( this, _( "Save Project File" ),
fn.GetPath(), fn.GetFullName(),
ProjectFileWildcard, wxFD_SAVE | wxFD_CHANGE_DIR );
if( dlg.ShowModal() == wxID_CANCEL )
return;
wxGetApp().WriteProjectConfig( dlg.GetPath(), GROUP,
GetProjectFileParametersList() );
}
else
wxGetApp().WriteProjectConfig( fn.GetFullPath(), GROUP,
GetProjectFileParametersList() );
}
static const wxString DefaultBusWidthEntry( wxT( "DefaultBusWidth" ) );

View File

@ -100,8 +100,7 @@ static GRID_TYPE SchematicGridList[] = {
#define SCHEMATIC_GRID_LIST_CNT ( sizeof( SchematicGridList ) / sizeof( GRID_TYPE ) )
SCH_SCREEN::SCH_SCREEN() :
BASE_SCREEN( SCH_SCREEN_T ),
SCH_SCREEN::SCH_SCREEN() : BASE_SCREEN( SCH_SCREEN_T ),
m_paper( wxT( "A4" ), IsGOST() )
{
size_t i;

View File

@ -830,7 +830,7 @@ void SCH_EDIT_FRAME::OnPrint( wxCommandEvent& event )
if( fn.GetFullName() != default_name )
{
fn.SetExt( ProjectFileExtension );
wxGetApp().WriteProjectConfig( fn.GetFullPath(), GROUP, GetProjectFileParameters() );
wxGetApp().WriteProjectConfig( fn.GetFullPath(), GROUP, GetProjectFileParametersList() );
}
}

View File

@ -37,6 +37,16 @@
#include <common.h>
#include <convert_to_biu.h>
/** Helper function Double2Str to print a float number without
* using scientific notation and no trailing 0
* We want to avoid scientific notation in S-expr files (not easy to read)
* for floating numbers.
* So we cannot always just use the %g or the %f format to print a fp number
* this helper function uses the %f format when needed, or %g when %f is
* not well working and then removes trailing 0
*/
std::string Double2Str( double aValue );
/**
* Function StripTrailingZeros
* Remove trailing 0 from a string containing a converted float number.

View File

@ -74,7 +74,6 @@ EXTERN_BITMAP( add_text_xpm )
EXTERN_BITMAP( add_tracks_xpm )
EXTERN_BITMAP( add_zone_cutout_xpm )
EXTERN_BITMAP( add_zone_xpm )
EXTERN_BITMAP( icon_pcbnew_xpm )
EXTERN_BITMAP( anchor_xpm )
EXTERN_BITMAP( annotate_down_right_xpm )
EXTERN_BITMAP( annotate_right_down_xpm )
@ -209,10 +208,12 @@ EXTERN_BITMAP( icon_gerbview_small_xpm )
EXTERN_BITMAP( icon_gerbview_xpm )
EXTERN_BITMAP( icon_kicad_xpm )
EXTERN_BITMAP( icon_modedit_xpm )
EXTERN_BITMAP( icon_pcbnew_xpm )
EXTERN_BITMAP( icon_txt_xpm )
EXTERN_BITMAP( icon_3d_xpm )
EXTERN_BITMAP( icon_bitmap2component_xpm )
EXTERN_BITMAP( icon_pcbcalculator_xpm )
EXTERN_BITMAP( icon_pagelayout_editor_xpm )
EXTERN_BITMAP( image_xpm )
EXTERN_BITMAP( import_cmp_from_lib_xpm )
EXTERN_BITMAP( import_footprint_names_xpm )
@ -354,6 +355,12 @@ EXTERN_BITMAP( pad_sketch_xpm )
EXTERN_BITMAP( pad_xpm )
EXTERN_BITMAP( pad_dimensions_xpm )
EXTERN_BITMAP( pads_mask_layers_xpm )
EXTERN_BITMAP( pagelayout_load_xpm )
EXTERN_BITMAP( pagelayout_load_default_xpm )
EXTERN_BITMAP( pagelayout_new_xpm )
EXTERN_BITMAP( pagelayout_recent_xpm )
EXTERN_BITMAP( pagelayout_normal_view_mode_xpm )
EXTERN_BITMAP( pagelayout_special_view_mode_xpm )
EXTERN_BITMAP( palette_xpm )
EXTERN_BITMAP( part_properties_xpm )
EXTERN_BITMAP( paste_xpm )

View File

@ -95,10 +95,12 @@ private:
public:
static wxString m_PageLayoutDescrFileName; ///< the name of the page layout descr file,
///< or emty to used the default pagelayout
wxPoint m_DrawOrg; ///< offsets for drawing the circuit on the screen
wxPoint m_O_Curseur; /* Relative Screen cursor coordinate (on grid)
* in user units. (coordinates from last reset position)*/
wxPoint m_O_Curseur; ///< Relative Screen cursor coordinate (on grid)
///< in user units. (coordinates from last reset position)
// Scrollbars management:
int m_ScrollPixelsPerUnitX; ///< Pixels per scroll unit in the horizontal direction.

View File

@ -0,0 +1,441 @@
/**
* @file class_worksheet_data_item.h
* @brief description of graphic items and texts to build a title block
*/
#ifndef CLASS_WORKSHEET_DATA_ITEM_H
#define CLASS_WORKSHEET_DATA_ITEM_H
#include <vector2d.h>
#include <eda_text.h>
class WS_DRAW_ITEM_TEXT; // Forward declaration
#define TB_DEFAULT_TEXTSIZE 1.5 // default worksheet text size in mm
// Text attributes set in m_flags (ORed bits)
#define USE_BOLD 1 // has meaning for texts
#define USE_THICK_LINE 1 // equivalent to bold for lines
#define USE_ITALIC (1<<1) // has meaning for texts
#define USE_ALT_COLOR (1<<2)
#define SELECTED_STATE (1<<3) // When set, use the hight light color to draw item
#define LOCATE_STARTPOINT (1<<4) // Used in locate function:set by locate function
// if the start point is located
#define LOCATE_ENDPOINT (1<<5) // Used in locate function:set by locate function
// if the end point is located
#define PAGE1OPTION (3<<6) // flag to manage items drawn or not drawn only
// on page 1: NONE = item on all pages
#define PAGE1OPTION_NONE (0<<6) // NONE = item on all pages
#define PAGE1OPTION_PAGE1ONLY (1<<6) // = item only on page 1
#define PAGE1OPTION_NOTONPAGE1 (2<<6) // = item on all pages but page 1
// A coordinate is relative to a page corner.
// Any of the 4 corners can be a reference.
// The default is the right bottom corner
enum corner_anchor
{
RB_CORNER, // right bottom corner
RT_CORNER, // right top corner
LB_CORNER, // left bottom corner
LT_CORNER, // left top corner
};
// a coordinate point
// The position is always relative to the corner anchor
// Note the coordinate is from the anchor point
// to the opposite corner.
class POINT_COORD
{
public:
DPOINT m_Pos;
int m_Anchor;
public:
POINT_COORD() { m_Anchor = RB_CORNER; }
POINT_COORD( DPOINT aPos, enum corner_anchor aAnchor = RB_CORNER )
{
m_Pos = aPos;
m_Anchor = aAnchor;
}
};
// Work sheet structure type definitions.
// Basic items are:
// * segment and rect (defined by 2 points)
// * text (defined by a coordinate), the text and its justifications
// * poly polygon defined by a coordinate, and a set of list of corners
// ( because we use it for logos, there are more than one polygon
// in this description
class WORKSHEET_DATAITEM
{
public:
enum WS_ItemType {
WS_TEXT,
WS_SEGMENT,
WS_RECT,
WS_POLYPOLYGON
};
protected:
WS_ItemType m_type;
int m_flags;
public:
wxString m_Name; // a item name used in page layout
// editor to identify items
wxString m_Info; // a comment, only useful in page
// layout editor
POINT_COORD m_Pos;
POINT_COORD m_End;
double m_LineWidth;
int m_RepeatCount; // repeat count for duplicate items
DPOINT m_IncrementVector; // For duplicate items: move vector
// for position increment
int m_IncrementLabel;
// These variables are static, because these values are common to all
// instances of WORKSHEET_DATAITEM.
// They are default or common values.
static double m_WSunits2Iu; // conversion factor between
// ws units (mils) and draw/plot units
static DPOINT m_RB_Corner; // cordinates of the right bottom corner
// (ws units)
static DPOINT m_LT_Corner; // cordinates of the left top corner
// (ws units)
static double m_DefaultLineWidth; // Default line width,
// when not defined inside a line
// or a rect
static DSIZE m_DefaultTextSize; // Default text size,
// when not defined inside a tbtext
static double m_DefaultTextThickness;// Default text thickness,
// when not defined inside a tbtext
static bool m_SpecialMode; // Used in page layout editor
// When set to true, base texts
// instead of full texts are displayed
static EDA_COLOR_T m_Color; // the default color to draw items
static EDA_COLOR_T m_AltColor; // an alternate color to draw items
static EDA_COLOR_T m_SelectedColor; // the color to draw selected items
// (used in page layout editor
public:
WORKSHEET_DATAITEM( WS_ItemType aType );
virtual ~WORKSHEET_DATAITEM() {}
void SetStart( double aPosx, double aPosy, enum corner_anchor aAnchor = RB_CORNER )
{
m_Pos.m_Pos.x = aPosx;
m_Pos.m_Pos.y = aPosy;
m_Pos.m_Anchor = aAnchor;
}
void SetEnd( double aPosx, double aPosy, enum corner_anchor aAnchor = RB_CORNER )
{
m_End.m_Pos.x = aPosx;
m_End.m_Pos.y = aPosy;
m_End.m_Anchor = aAnchor;
}
// Accessors:
WS_ItemType GetType() const { return m_type; }
int GetFlags() const { return m_flags; }
void SetFlags( int aMask ) { m_flags |= aMask; }
void ClearFlags( int aMask ) { m_flags &= ~aMask; }
/**
* @return 0 if the item has no specific option for page 1
* 1 if the item is only on page 1
* -1 if the item is not on page 1
*/
int GetPage1Option();
/**
* Set the option for page 1
* @param aChoice = 0 if the item has no specific option for page 1
* > 0 if the item is only on page 1
* < 0 if the item is not on page 1
*/
void SetPage1Option( int aChoice );
// Coordinate handling
const wxPoint GetStartPosUi( int ii = 0 ) const;
const wxPoint GetEndPosUi( int ii = 0 ) const;
const DPOINT GetStartPos( int ii = 0 ) const;
const DPOINT GetEndPos( int ii = 0 ) const;
virtual int GetPenSizeUi()
{
if( m_LineWidth )
return KiROUND( m_LineWidth * m_WSunits2Iu );
else
return KiROUND( m_DefaultLineWidth * m_WSunits2Iu );
}
static int GetMarkerSizeUi()
{
return KiROUND( 0.5 * m_WSunits2Iu );
}
/**
* move item to a new position
* @param aPosition = the new position of item, in mm
*/
void MoveTo( DPOINT aPosition );
/**
* move item to a new position
* @param aPosition = the new position of the starting point in graphic units
*/
void MoveToUi( wxPoint aPosition );
/**
* move the starting point of the item to a new position
* @param aPosition = the new position of the starting point, in mm
*/
void MoveStartPointTo( DPOINT aPosition );
/**
* move the starting point of the item to a new position
* @param aPosition = the new position of item in graphic units
*/
void MoveStartPointToUi( wxPoint aPosition );
/**
* move the ending point of the item to a new position
* has meaning only for items defined by 2 points
* (segments and rectangles)
* @param aPosition = the new position of the ending point, in mm
*/
void MoveEndPointTo( DPOINT aPosition );
/**
* move the ending point of the item to a new position
* has meaning only for items defined by 2 points
* (segments and rectangles)
* @param aPosition = the new position of the ending point in graphic units
*/
void MoveEndPointToUi( wxPoint aPosition );
/**
* @return true if the item is inside the rectangle defined by the
* 4 corners, false otherwise.
*/
virtual bool IsInsidePage( int ii ) const;
const wxString GetClassName() const;
/**
* @return true if the selected state on ON
*/
bool IsSelected() { return (m_flags & SELECTED_STATE) != 0; }
/**
* Function SetSelected
* Toggles on/off the selected flag (used in edition functions
* @param aState = the flag value
*/
void SetSelected( bool aState )
{
if( aState )
m_flags |= SELECTED_STATE;
else
m_flags &= ~SELECTED_STATE;
}
bool UseAltColor() {return m_flags & USE_ALT_COLOR; }
EDA_COLOR_T GetItemColor()
{
if( IsSelected() )
return m_SelectedColor;
if( UseAltColor() )
return m_AltColor;
return m_Color;
}
};
class WORKSHEET_DATAITEM_POLYPOLYGON : public WORKSHEET_DATAITEM
{
public:
double m_Orient; // Orientation in degrees
std::vector<DPOINT> m_Corners; // corner list
private:
std::vector<unsigned> m_polyIndexEnd; // index of the last point of each polygon
DPOINT m_minCoord; // min coord of corners, relative to m_Pos
DPOINT m_maxCoord; // max coord of corners, relative to m_Pos
public:
WORKSHEET_DATAITEM_POLYPOLYGON( );
virtual int GetPenSizeUi()
{
return KiROUND( m_LineWidth * m_WSunits2Iu );
}
/**
* add a corner in corner list
* @param aCorner: the item to append
*/
void AppendCorner( const DPOINT& aCorner )
{
m_Corners.push_back( aCorner );
}
/**
* Closes the current contour, by storing the index of the last corner
* of the current polygon in m_polyIndexEnd.
*/
void CloseContour()
{
m_polyIndexEnd.push_back( m_Corners.size() -1 );
}
/**
* @return the count of contours in the poly polygon
*/
int GetPolyCount() const { return (int) m_polyIndexEnd.size(); }
/**
* @return the index of the first corner of the contour aCountour
* @param aContour = the index of the contour
*/
unsigned GetPolyIndexStart( unsigned aContour) const
{
if( aContour == 0 )
return 0;
else
return m_polyIndexEnd[aContour-1] + 1;
}
/**
* @return the index of the last corner of the contour aCountour
* @param aContour = the index of the contour
*/
unsigned GetPolyIndexEnd( unsigned aContour) const
{
return m_polyIndexEnd[aContour];
}
/**
* @return the coordinate (in mm) of the corner aIdx,
* for the repeated item aRepeat
*/
const DPOINT GetCornerPosition( unsigned aIdx, int aRepeat = 0 ) const;
/**
* @return the coordinate (in draw/plot units) of the corner aIdx,
* for the repeated item aRepeat
*/
const wxPoint GetCornerPositionUi( unsigned aIdx, int aRepeat = 0 ) const;
/**
* calculate the bounding box of the set polygons
*/
void SetBoundingBox();
bool IsInsidePage( int ii ) const;
};
class WORKSHEET_DATAITEM_TEXT : public WORKSHEET_DATAITEM
{
public:
wxString m_TextBase; // The basic text, with format symbols
wxString m_FullText; // The expanded text, shown on screen
double m_Orient; // Orientation in degrees
enum EDA_TEXT_HJUSTIFY_T m_Hjustify;
enum EDA_TEXT_VJUSTIFY_T m_Vjustify;
DSIZE m_TextSize;
DSIZE m_BoundingBoxSize; // When not null, this is the max
// size of the full text.
// the text size will be modified
// to keep the full text insite this
// bound.
DSIZE m_ConstrainedTextSize;// Actual text size, if constrained by
// the m_BoundingBoxSize constraint
public:
WORKSHEET_DATAITEM_TEXT( const wxChar* aTextBase );
virtual int GetPenSizeUi()
{
if( m_LineWidth )
return KiROUND( m_LineWidth * m_WSunits2Iu );
else
return KiROUND( m_DefaultTextThickness * m_WSunits2Iu );
}
/**
* move item to a new position
* @param aPosition = the new position of item
*/
void MoveTo( DPOINT aPosition );
/**
* transfert the text justification and orientation
* to aGText
*/
void TransfertSetupToGraphicText( WS_DRAW_ITEM_TEXT* aGText );
/**
* Try to build text wihich is an increment of m_TextBase
* has meaning only if m_TextBase is a basic text (one char)
* If the basic char is a digit, build a number
* If the basic char is a letter, use the letter with ascii code
* aIncr + (basic char ascc code)
* @param aIncr = the increment value
* return the incremented label in m_FullText
*/
void IncrementLabel( int aIncr );
/**
* Calculates m_ConstrainedTextSize from m_TextSize
* to keep the X size and the full Y size of the text
* smaller than m_BoundingBoxSize
* if m_BoundingBoxSize.x or m_BoundingBoxSize.y > 0
* if m_BoundingBoxSize.x or m_BoundingBoxSize.y == 0
* the corresponding text size is not constrained
*/
void SetConstrainedTextSize();
/**
* @return true is a bold font should be selected
*/
bool IsBold() { return (m_flags & USE_BOLD) != 0; }
/**
* Function SetBold
* Toggles on/off the bold option flag
* @param aState = the bold option value
*/
void SetBold( bool aState )
{
if( aState )
m_flags |= USE_BOLD;
else
m_flags &= ~USE_BOLD;
}
/**
* @return true is an italic font should be selected
*/
bool IsItalic() const { return (m_flags & USE_ITALIC) != 0; }
/**
* Function SetItalic
* Toggles on/off the italic option flag
* @param aState = the italic option value
*/
void SetItalic( bool aState )
{
if( aState )
m_flags |= USE_ITALIC;
else
m_flags &= ~USE_ITALIC;
}
};
#endif // CLASS_WORKSHEET_DATA_ITEM_H

View File

@ -83,6 +83,7 @@ enum pseudokeys {
#define GERBVIEW_EXE wxT( "gerbview.exe" )
#define BITMAPCONVERTER_EXE wxT( "bitmap2component.exe" )
#define PCB_CALCULATOR_EXE wxT( "pcb_calculator.exe" )
#define PL_EDITOR_EXE wxT( "pl_editor.exe" )
#else
#ifndef __WXMAC__
#define CVPCB_EXE wxT( "cvpcb" )
@ -91,6 +92,7 @@ enum pseudokeys {
#define GERBVIEW_EXE wxT( "gerbview" )
#define BITMAPCONVERTER_EXE wxT( "bitmap2component" )
#define PCB_CALCULATOR_EXE wxT( "pcb_calculator" )
#define PL_EDITOR_EXE wxT( "pl_editor" )
#else
#define CVPCB_EXE wxT( "cvpcb.app/Contents/MacOS/cvpcb" )
#define PCBNEW_EXE wxT( "pcbnew.app/Contents/MacOS/pcbnew" )
@ -98,6 +100,7 @@ enum pseudokeys {
#define GERBVIEW_EXE wxT( "gerbview.app/Contents/MacOS/gerbview" )
#define BITMAPCONVERTER_EXE wxT( "bitmap2component.app/Contents/MacOS/bitmap2component" )
#define PCB_CALCULATOR_EXE wxT( "pcb_calculator.app/Contents/MacOS/pcb_calculator" )
#define PL_EDITOR_EXE wxT( "pcb_calculator.app/Contents/MacOS/pl_editor" )
# endif
#endif
@ -167,7 +170,14 @@ inline int Mils2mm( double x ) { return KiROUND( x * 25.4 / 1000. ); }
/// Return whether GOST is in play
bool IsGOST();
inline bool IsGOST()
{
#if defined(KICAD_GOST)
return true;
#else
return false;
#endif
}
enum EDA_UNITS_T {
@ -286,7 +296,7 @@ public:
// Accessors returning "Internal Units (IU)". IUs are mils in EESCHEMA,
// and either deci-mils or nanometers in PCBNew.
#if defined(PCBNEW) || defined(EESCHEMA) || defined(GERBVIEW)
#if defined(PCBNEW) || defined(EESCHEMA) || defined(GERBVIEW) || defined(PL_EDITOR)
int GetWidthIU() const { return IU_PER_MILS * GetWidthMils(); }
int GetHeightIU() const { return IU_PER_MILS * GetHeightMils(); }
const wxSize GetSizeIU() const { return wxSize( GetWidthIU(), GetHeightIU() ); }

View File

@ -55,8 +55,25 @@ inline int DMils2iu( int dmils )
#endif
}
#else // Eeschema and anything else.
#elif defined (PL_EDITOR)
#define IU_PER_MM 1e3 // internal units in micron (should be enough)
#define IU_PER_MILS (IU_PER_MM * 0.0254)
#define IU_PER_DECIMILS (IU_PER_MM * 0.00254)
/// Convert mils to page layout editor internal units (iu).
inline int Mils2iu( int mils )
{
double x = mils * IU_PER_MILS;
return int( x < 0 ? x - 0.5 : x + 0.5 );
}
/// Convert deci-mils to page layout editor internal units (iu).
inline int DMils2iu( int dmils )
{
double x = dmils * IU_PER_DECIMILS;
return int( x < 0 ? x - 0.5 : x + 0.5 );
}
#else // Eeschema and anything else.
#define IU_PER_DECIMILS 0.1
#define IU_PER_MILS 1.0
#define IU_PER_MM (IU_PER_MILS / 0.0254)

View File

@ -55,6 +55,7 @@ extern const wxString GerberFileExtension;
extern const wxString LegacyPcbFileExtension;
extern const wxString KiCadPcbFileExtension;
#define PcbFileExtension KiCadPcbFileExtension // symlink choice
extern const wxString PageLayoutDescrFileExtension;
extern const wxString LegacyFootprintLibPathExtension;
extern const wxString PdfFileExtension;
@ -69,6 +70,7 @@ extern const wxString KiCadFootprintLibPathExtension;
extern const wxString GedaPcbFootprintLibFileExtension;
extern const wxString EagleFootprintLibPathExtension;
extern const wxString ComponentFileExtensionWildcard;
extern const wxString PageLayoutDescrFileWildcard;
/// Proper wxFileDialog wild card definitions.
extern const wxString SchematicSymbolFileWildcard;

View File

@ -10,257 +10,11 @@
#include <vector2d.h>
#include <eda_text.h>
class WS_DRAW_ITEM_TEXT; // Forward declaration
class WORKSHEET_DATAITEM; // Forward declaration
class TITLE_BLOCK;
#define TB_DEFAULT_TEXTSIZE 1.5 // default worksheet text size in mm
// Text attributes set in m_Flags (ORed bits)
#define USE_BOLD 1 // has meaning for texts
#define USE_THICK_LINE 1 // equivalent to bold for lines
#define USE_ITALIC 2 // has meaning for texts
#define USE_TEXT_COLOR 4
#define SET_UPPER_LIMIT 8 // Flag used to calculate variable position items
// A coordinate is relative to a page corner.
// Any of the 4 corners can be a reference.
// The default is the right bottom corner
enum corner_anchor
{
RB_CORNER, // right bottom corner
RT_CORNER, // right top corner
LB_CORNER, // left bottom corner
LT_CORNER, // left top corner
};
// a coordinate point
// The position is always relative to the corner anchor
// Note the coordinate is from the anchor point
// to the opposite corner.
class POINT_COORD
{
public:
DPOINT m_Pos;
int m_Anchor;
public:
POINT_COORD() { m_Anchor = RB_CORNER; }
POINT_COORD( DPOINT aPos, enum corner_anchor aAnchor = RB_CORNER )
{
m_Pos = aPos;
m_Anchor = aAnchor;
}
};
// Work sheet structure type definitions.
// Basic items are:
// * segment and rect (defined by 2 points)
// * text (defined by a coordinate), the text and its justifications
// * poly polygon defined by a coordinate, and a set of list of corners
// ( because we use it for logos, there are more than one polygon
// in this description
class WORKSHEET_DATAITEM
{
public:
enum WS_ItemType {
WS_TEXT,
WS_SEGMENT,
WS_RECT,
WS_POLYPOLYGON
};
WS_ItemType m_Type;
POINT_COORD m_Pos;
POINT_COORD m_End;
double m_LineWidth;
int m_Flags;
int m_RepeatCount; // repeat count for duplicate items
DPOINT m_IncrementVector; // For duplicate items: move vector
// for position increment
int m_IncrementLabel;
static double m_WSunits2Iu; // conversion factor between
// ws units (mils) and draw/plot units
static DPOINT m_RB_Corner; // cordinates of the right bottom corner
// (ws units)
static DPOINT m_LT_Corner; // cordinates of the left top corner
// (ws units)
public:
WORKSHEET_DATAITEM( WS_ItemType aType )
{
m_Type = aType;
m_Flags = 0;
m_RepeatCount = 1;
m_IncrementLabel = 0;
m_LineWidth = 0.0;
}
virtual ~WORKSHEET_DATAITEM() {}
void SetStart( double aPosx, double aPosy, enum corner_anchor aAnchor = RB_CORNER )
{
m_Pos.m_Pos.x = aPosx;
m_Pos.m_Pos.y = aPosy;
m_Pos.m_Anchor = aAnchor;
}
void SetEnd( double aPosx, double aPosy, enum corner_anchor aAnchor = RB_CORNER )
{
m_End.m_Pos.x = aPosx;
m_End.m_Pos.y = aPosy;
m_End.m_Anchor = aAnchor;
}
const wxPoint GetStartPosUi( int ii = 0 ) const;
const wxPoint GetEndPosUi( int ii = 0 ) const;
const DPOINT GetStartPos( int ii = 0 ) const;
const DPOINT GetEndPos( int ii = 0 ) const;
int GetPenSizeUi() {return KiROUND( m_LineWidth * m_WSunits2Iu ); }
/**
* @return true if the item is inside the rectangle defined by the
* 4 corners, false otherwise.
*/
virtual bool IsInsidePage( int ii ) const;
};
class WORKSHEET_DATAITEM_POLYPOLYGON : public WORKSHEET_DATAITEM
{
public:
double m_Orient; // Orientation in degrees
std::vector<DPOINT> m_Corners; // corner list
private:
std::vector<unsigned> m_polyIndexEnd; // index of the last point of each polygon
DPOINT m_minCoord; // min coord of corners, relative to m_Pos
DPOINT m_maxCoord; // max coord of corners, relative to m_Pos
public:
WORKSHEET_DATAITEM_POLYPOLYGON( );
/**
* add a corner in corner list
* @param aCorner: the item to append
*/
void AppendCorner( const DPOINT& aCorner )
{
m_Corners.push_back( aCorner );
}
/**
* Closes the current contour, by storing the index of the last corner
* of the current polygon in m_polyIndexEnd.
*/
void CloseContour()
{
m_polyIndexEnd.push_back( m_Corners.size() -1 );
}
/**
* @return the count of contours in the poly polygon
*/
int GetPolyCount() const { return (int) m_polyIndexEnd.size(); }
/**
* @return the index of the first corner of the contour aCountour
* @param aContour = the index of the contour
*/
unsigned GetPolyIndexStart( unsigned aContour) const
{
if( aContour == 0 )
return 0;
else
return m_polyIndexEnd[aContour-1] + 1;
}
/**
* @return the index of the last corner of the contour aCountour
* @param aContour = the index of the contour
*/
unsigned GetPolyIndexEnd( unsigned aContour) const
{
return m_polyIndexEnd[aContour];
}
/**
* @return the coordinate (in mm) of the corner aIdx,
* for the repeated item aRepeat
*/
const DPOINT GetCornerPosition( unsigned aIdx, int aRepeat = 0 ) const;
/**
* @return the coordinate (in draw/plot units) of the corner aIdx,
* for the repeated item aRepeat
*/
const wxPoint GetCornerPositionUi( unsigned aIdx, int aRepeat = 0 ) const;
/**
* calculate the bounding box of the set polygons
*/
void SetBoundingBox();
bool IsInsidePage( int ii ) const;
};
class WORKSHEET_DATAITEM_TEXT : public WORKSHEET_DATAITEM
{
public:
wxString m_TextBase; // The basic text, with format symbols
wxString m_FullText; // The expanded text, shown on screen
int m_IncrementLabel;
double m_Orient; // Orientation in degrees
enum EDA_TEXT_HJUSTIFY_T m_Hjustify;
enum EDA_TEXT_VJUSTIFY_T m_Vjustify;
DSIZE m_TextSize;
DSIZE m_BoundingBoxSize; // When not null, this is the max
// size of the full text.
// the text size will be modified
// to keep the full text insite this
// bound.
DSIZE m_ConstrainedTextSize;// Actual text size, if constrained by
// the m_BoundingBoxSize constraint
public:
WORKSHEET_DATAITEM_TEXT( const wxChar* aTextBase );
/**
* transfert the text justification and orientation
* to aGText
*/
void TransfertSetupToGraphicText( WS_DRAW_ITEM_TEXT* aGText );
/**
* Try to build text wihich is an increment of m_TextBase
* has meaning only if m_TextBase is a basic text (one char)
* If the basic char is a digit, build a number
* If the basic char is a letter, use the letter with ascii code
* aIncr + (basic char ascc code)
* @param aIncr = the increment value
* return the incremented label in m_FullText
*/
void IncrementLabel( int aIncr );
/**
* Calculates m_ConstrainedTextSize from m_TextSize
* to keep the X size and the full Y size of the text
* smaller than m_BoundingBoxSize
* if m_BoundingBoxSize.x or m_BoundingBoxSize.y > 0
* if m_BoundingBoxSize.x or m_BoundingBoxSize.y == 0
* the corresponding text size is not constrained
*/
void SetConstrainedTextSize();
/**
* @return true is a bold font should be selected
*/
bool IsBold() { return (m_Flags & USE_BOLD) != 0; }
/**
* @return true is an italic font should be selected
*/
bool IsItalic() { return (m_Flags & USE_ITALIC) != 0; }
};
/*
* Helper classes to handle basic graphic items used to raw/plot
* title blocks and frame references
@ -275,16 +29,24 @@ public:
enum WS_DRAW_TYPE {
wsg_line, wsg_rect, wsg_poly, wsg_text
};
int m_Flags; // temporary flgs used in page layout editor
// to locate the item;
protected:
WS_DRAW_TYPE m_type; // wsg_line, wsg_rect, wsg_poly, wsg_text
EDA_COLOR_T m_color;
WORKSHEET_DATAITEM* m_parent; // an unique identifier, used as link
// to the parent WORKSHEET_DATAITEM item,
// in page layout editor
protected:
WS_DRAW_ITEM_BASE( WS_DRAW_TYPE aType, EDA_COLOR_T aColor )
WS_DRAW_ITEM_BASE( WORKSHEET_DATAITEM* aParent,
WS_DRAW_TYPE aType, EDA_COLOR_T aColor )
{
m_type = aType;
m_color = aColor;
m_parent = aParent;
m_Flags = 0;
}
public:
@ -293,6 +55,35 @@ public:
// Accessors:
EDA_COLOR_T GetColor() { return m_color; }
WS_DRAW_TYPE GetType() { return m_type; };
WORKSHEET_DATAITEM* GetParent() { return m_parent; }
/**
* Abstract function: should exist for derived items
* return true if the point aPosition is on the item
*/
virtual bool HitTest( const wxPoint& aPosition) = 0;
/**
* Abstract function: should exist for derived items
* return true if the point aPosition is near the starting point of this item,
* for items defined by 2 points (segments, rect)
* or the position of the item, for items having only one point
* (texts or polygons)
* the maxi dist is WORKSHEET_DATAITEM::GetMarkerSizeUi()/2
*/
virtual bool HitTestStartPoint( const wxPoint& aPosition) = 0;
/**
* return true if the point aPosition is near the ending point of this item
* This is avirtual function which should be overriden for items defien by
* 2 points
* the maxi dist is WORKSHEET_DATAITEM::GetMarkerSizeUi()/2
*/
virtual bool HitTestEndPoint( const wxPoint& aPosition)
{
return false;
}
};
// This class draws a thick segment
@ -303,9 +94,10 @@ class WS_DRAW_ITEM_LINE : public WS_DRAW_ITEM_BASE
int m_penWidth;
public:
WS_DRAW_ITEM_LINE( wxPoint aStart, wxPoint aEnd,
WS_DRAW_ITEM_LINE( WORKSHEET_DATAITEM* aParent,
wxPoint aStart, wxPoint aEnd,
int aPenWidth, EDA_COLOR_T aColor ) :
WS_DRAW_ITEM_BASE( wsg_line, aColor )
WS_DRAW_ITEM_BASE( aParent, wsg_line, aColor )
{
m_start = aStart;
m_end = aEnd;
@ -316,11 +108,32 @@ public:
int GetPenWidth() { return m_penWidth; }
const wxPoint& GetStart() { return m_start; }
const wxPoint& GetEnd() { return m_end; }
/**
* Virtual function
* return true if the point aPosition is on the line
*/
virtual bool HitTest( const wxPoint& aPosition);
/**
* return true if the point aPosition is on the starting point of this item.
*/
virtual bool HitTestStartPoint( const wxPoint& aPosition);
/**
* return true if the point aPosition is on the ending point of this item
* This is avirtual function which should be overriden for items defien by
* 2 points
*/
virtual bool HitTestEndPoint( const wxPoint& aPosition);
};
// This class draws a polygon
class WS_DRAW_ITEM_POLYGON : public WS_DRAW_ITEM_BASE
{
wxPoint m_pos; // position of reference point, from the
// WORKSHEET_DATAITEM_POLYPOLYGON parent
// (used only in page layout editor to draw anchors)
int m_penWidth;
bool m_fill;
@ -328,28 +141,61 @@ public:
std::vector <wxPoint> m_Corners;
public:
WS_DRAW_ITEM_POLYGON( bool aFill, int aPenWidth, EDA_COLOR_T aColor ) :
WS_DRAW_ITEM_BASE( wsg_poly, aColor )
WS_DRAW_ITEM_POLYGON( WORKSHEET_DATAITEM* aParent, wxPoint aPos,
bool aFill, int aPenWidth, EDA_COLOR_T aColor ) :
WS_DRAW_ITEM_BASE( aParent, wsg_poly, aColor )
{
m_penWidth = aPenWidth;
m_fill = aFill;
m_pos = aPos;
}
// Accessors:
int GetPenWidth() { return m_penWidth; }
bool IsFilled() { return m_fill; }
const wxPoint& GetPosition() { return m_pos; }
/**
* Virtual function
* return true if the point aPosition is inside one polygon
*/
virtual bool HitTest( const wxPoint& aPosition);
/**
* return true if the point aPosition is on the starting point of this item.
*/
virtual bool HitTestStartPoint( const wxPoint& aPosition);
};
// This class draws a not filled rectangle with thick segment
class WS_DRAW_ITEM_RECT : public WS_DRAW_ITEM_LINE
{
public:
WS_DRAW_ITEM_RECT( wxPoint aStart, wxPoint aEnd,
WS_DRAW_ITEM_RECT( WORKSHEET_DATAITEM* aParent,
wxPoint aStart, wxPoint aEnd,
int aPenWidth, EDA_COLOR_T aColor ) :
WS_DRAW_ITEM_LINE( aStart, aEnd, aPenWidth, aColor )
WS_DRAW_ITEM_LINE( aParent, aStart, aEnd, aPenWidth, aColor )
{
m_type = wsg_rect;
}
/**
* Virtual function
* return true if the point aPosition is on one edge of the rectangle
*/
virtual bool HitTest( const wxPoint& aPosition);
/**
* return true if the point aPosition is on the starting point of this item.
*/
virtual bool HitTestStartPoint( const wxPoint& aPosition);
/**
* return true if the point aPosition is on the ending point of this item
* This is avirtual function which should be overriden for items defien by
* 2 points
*/
virtual bool HitTestEndPoint( const wxPoint& aPosition);
};
// This class draws a graphic text.
@ -358,10 +204,11 @@ public:
class WS_DRAW_ITEM_TEXT : public WS_DRAW_ITEM_BASE, public EDA_TEXT
{
public:
WS_DRAW_ITEM_TEXT( wxString& aText, wxPoint aPos, wxSize aSize,
WS_DRAW_ITEM_TEXT( WORKSHEET_DATAITEM* aParent,
wxString& aText, wxPoint aPos, wxSize aSize,
int aPenWidth, EDA_COLOR_T aColor,
bool aItalic = false, bool aBold = false ) :
WS_DRAW_ITEM_BASE( wsg_text, aColor ), EDA_TEXT( aText )
WS_DRAW_ITEM_BASE( aParent, wsg_text, aColor ), EDA_TEXT( aText )
{
SetTextPosition( aPos );
SetSize( aSize );
@ -372,6 +219,17 @@ public:
// Accessors:
int GetPenWidth() { return GetThickness(); }
/**
* Virtual function
* return true if the point aPosition is on the text
*/
virtual bool HitTest( const wxPoint& aPosition);
/**
* return true if the point aPosition is on the starting point of this item.
*/
virtual bool HitTestStartPoint( const wxPoint& aPosition);
};
/*
@ -420,8 +278,26 @@ public:
delete m_graphicList[ii];
}
/* Function SetPenSize
* Set the defualt pen size to draw/plot lines and texts
/**
* Set the filename to draw/plot
* @param aFileName = the text to display by the "filename" format
*/
void SetFileName( const wxString & aFileName )
{
m_fileName = &aFileName;
}
/**
* Set the sheet name to draw/plot
* @param aSheetName = the text to draw/plot by the "sheetname" format
*/
void SetSheetName( const wxString & aSheetName )
{
m_sheetFullName = &aSheetName;
}
/** Function SetPenSize
* Set the default pen size to draw/plot lines and texts
* @param aPenSize the thickness of lines
*/
void SetPenSize( int aPenSize )
@ -429,7 +305,7 @@ public:
m_penSize = aPenSize;
}
/* Function SetMilsToIUfactor
/** Function SetMilsToIUfactor
* Set the scalar to convert pages units ( mils) to draw/plot units
* @param aScale the conversion factor
*/
@ -438,7 +314,7 @@ public:
m_milsToIu = aScale;
}
/* Function SetPageSize
/** Function SetPageSize
* Set the size of the page layout
* @param aPageSize size (in mils) of the page layout.
*/
@ -467,7 +343,7 @@ public:
m_sheetCount = aSheetCount;
}
/* Function SetMargins
/** Function SetMargins
* Set the left top margin and the right bottom margin
* of the page layout
* @param aLTmargin The left top margin of the page layout.
@ -505,7 +381,7 @@ public:
}
/**
* Draws the item list crated by BuildWorkSheetGraphicList
* Draws the item list created by BuildWorkSheetGraphicList
* @param aClipBox = the clipping rect, or NULL if no clipping
* @param aDC = the current Device Context
*/
@ -515,19 +391,23 @@ public:
* Function BuildWorkSheetGraphicList is a core function for
* drawing or plotting the page layout with
* the frame and the basic inscriptions.
* It fills the list of basic graphic items to draw or plot.
* It populates the list of basic graphic items to draw or plot.
* currently lines, rect, polygons and texts
* before calling this function, some parameters should be initialized:
* by calling:
* SetPenSize( aPenWidth );
* SetMilsToIUfactor( aScalar );
* SetSheetNumber( aSheetNumber );
* SetSheetCount( aSheetCount );
* SetFileName( aFileName );
* SetSheetName( aFullSheetName );
*
* @param aPaperFormat The paper size type, for basic inscriptions.
* @param aFileName The file name, for basic inscriptions.
* @param aSheetPathHumanReadable The human readable sheet path.
* @param aPageInfo The PAGE_INFO, for page size, margins...
* @param aTitleBlock The sheet title block, for basic inscriptions.
* @param aColor The color for drawing.
* @param aAltColor The color for items which need to be "hightlighted".
*/
void BuildWorkSheetGraphicList( const wxString& aPaperFormat,
const wxString& aFileName,
const wxString& aSheetPathHumanReadable,
void BuildWorkSheetGraphicList( const PAGE_INFO& aPageInfo,
const TITLE_BLOCK& aTitleBlock,
EDA_COLOR_T aColor, EDA_COLOR_T aAltColor );
/**
@ -559,27 +439,68 @@ public:
* @return the text, after replacing the format symbols by the actual value
*/
wxString BuildFullText( const wxString& aTextbase );
/**
* Locate graphic items in m_graphicList at location aPosition
* @param aList = the list of items found
* @param aPosition the position (in user units) to locate items
*/
void Locate(std::vector <WS_DRAW_ITEM_BASE*>& aList, const wxPoint& aPosition);
};
/**
* WORKSHEET_LAYOUT handles the grpahic items list to draw/plot
* WORKSHEET_LAYOUT handles the graphic items list to draw/plot
* the title block and other items (page references ...
*/
class WORKSHEET_LAYOUT
{
std::vector <WORKSHEET_DATAITEM*> m_list;
bool m_allowVoidList; // If false, the default page layout
// will be loaded the first time
// WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList
// is run (useful mainly for page layout editor)
public:
WORKSHEET_LAYOUT() {};
WORKSHEET_LAYOUT() { m_allowVoidList = false; }
~WORKSHEET_LAYOUT() {ClearList(); }
void ClearList()
/**
* static function: returns the instance of WORKSHEET_LAYOUT
* used in the application
*/
static WORKSHEET_LAYOUT& GetTheInstance()
{
for( unsigned ii = 0; ii < m_list.size(); ii++ )
delete m_list[ii];
extern WORKSHEET_LAYOUT wksTheInstance;
return wksTheInstance;
}
/**
* In Kicad applications, a page layout description is needed
* So if the list is empty, a default description is loaded,
* the first time a page layout is drawn.
* However, in page layout editor, an empty list is acceptable.
* AllowVoidList allows or not the empty list
*/
void AllowVoidList( bool Allow ) { m_allowVoidList = Allow; }
/**
* @return true if an empty list is allowed
* (mainly allowed for page layout editor).
*/
bool VoidListAllowed() { return m_allowVoidList; }
/**
* erase the list of items
*/
void ClearList();
/**
* Function Save:
* @param aFullFileName the filename of the file to created
*/
void Save( const wxString& aFullFileName );
/**
* Add an item to the list of items
*/
@ -588,16 +509,30 @@ public:
m_list.push_back( aItem );
}
/**
*Insert an item to the list of items at position aIdx
*/
void Insert( WORKSHEET_DATAITEM* aItem, unsigned aIdx );
/**
*Remove the item to the list of items at position aIdx
*/
bool Remove( unsigned aIdx );
/**
*Remove the item to the list of items at position aIdx
*/
bool Remove( WORKSHEET_DATAITEM* aItem );
/**
* @return the index of aItem, or -1 if does not exist
*/
int GetItemIndex( WORKSHEET_DATAITEM* aItem ) const;
/**
* @return the item from its index aIdx, or NULL if does not exist
*/
WORKSHEET_DATAITEM* GetItem( unsigned aIdx ) const
{
if( aIdx < m_list.size() )
return m_list[aIdx];
else
return NULL;
}
WORKSHEET_DATAITEM* GetItem( unsigned aIdx ) const;
/**
* @return the item count
@ -610,11 +545,32 @@ public:
void SetDefaultLayout();
/**
* Fills the list with a custom layout, or
* Populates the list with a custom layout, or
* the default layout, if no custom layout available
* @param aFullFileName = the custom page layout description file.
* if empty, loads the file defined by KICAD_WKSFILE
* and if its is not defined, uses the default internal description
* @param Append = if true: do not delete old layout, and load only
aFullFileName.
*/
void SetLayout();
void SetPageLayout( const wxString& aFullFileName = wxEmptyString,
bool Append = false );
/**
* @return a short filename from a full filename:
* if the path is the current path, or if the path
* is the same as kicad.pro (in template), returns the shortname
* else do nothing and returns a full filename
*/
static const wxString MakeShortFileName( const wxString& aFullFileName );
/**
* @return a full filename from a short filename,
* if the short filename path is void
* In this case the path is the same as kicad.pro (in template)
* else return the short filename (which have an absolute os relative path
*/
static const wxString MakeFullFileName( const wxString& aShortFileName );
};
#endif // WORKSHEET_SHAPE_BUILDER_H

View File

@ -157,7 +157,7 @@ private:
/// The name of the format to use when generating a net list.
wxString m_netListFormat;
/// Add X prefix to componen referencess when generating spice net lists.
/// Add X prefix to component references when generating spice net lists.
bool m_addReferencPrefix;
wxString m_userLibraryPath;
@ -239,7 +239,7 @@ public:
void GeneralControl( wxDC* aDC, const wxPoint& aPosition, int aHotKey = 0 );
/**
* Function GetProjectFileParameters
* Function GetProjectFileParametersList
* returns the project file parameter list for Eeschema.
*
*<p?
@ -250,13 +250,14 @@ public:
* compile time required global variable definitions.
* </p>
*/
PARAM_CFG_ARRAY& GetProjectFileParameters( void );
PARAM_CFG_ARRAY& GetProjectFileParametersList( void );
/**
* Function SaveProjectFile
* Function SaveProjectSettings
* saves changes to the project settings to the project (.pro) file.
* @param aAskForSave = true to open a dialog before saving the settings
*/
void SaveProjectFile();
void SaveProjectSettings( bool aAskForSave );
/**
* Function LoadProjectFile

View File

@ -345,7 +345,12 @@ public:
*/
PARAM_CFG_ARRAY GetProjectFileParameters();
void SaveProjectSettings();
/**
* Function SaveProjectSettings
* saves changes to the project settings to the project (.pro) file.
* @param aAskForSave = true to open a dialog before saving the settings
*/
void SaveProjectSettings( bool aAskForSave );
/**
* Load the project file configuration settings.

View File

@ -96,7 +96,8 @@ enum ID_DRAWFRAME_TYPE
GERBER_FRAME_TYPE,
TEXT_EDITOR_FRAME_TYPE,
DISPLAY3D_FRAME_TYPE,
KICAD_MAIN_FRAME_TYPE
KICAD_MAIN_FRAME_TYPE,
PL_EDITOR_FRAME_TYPE
};
@ -222,6 +223,15 @@ public:
*/
virtual void SaveSettings();
/**
* Function SaveProjectSettings
* saves changes to the project settings to the project (.pro) file.
* The method is virtual so you can override it to call the suitable save method.
* The base method do nothing
* @param aAskForSave = true to open a dialog before saving the settings
*/
virtual void SaveProjectSettings( bool aAskForSave ) {};
/**
* Function OnSelectPreferredEditor
* Open a dialog to select the editor that will used in KiCad

View File

@ -233,6 +233,10 @@ void TREEPROJECT_ITEM::Activate( TREE_PROJECT_FRAME* prjframe )
break;
}
case TREE_PAGE_LAYOUT_DESCR:
mainFrame->Execute( m_parent, PL_EDITOR_EXE, FullFileName );
break;
default:
OpenFile( FullFileName );
break;

View File

@ -74,7 +74,8 @@ TREEPROJECTFILES::TREEPROJECTFILES( TREE_PROJECT_FRAME* parent ) :
m_ImageList->Add( KiBitmap( tools_xpm ) ); // TREE_REPORT
m_ImageList->Add( KiBitmap( post_compo_xpm ) ); // TREE_POS
m_ImageList->Add( KiBitmap( post_drill_xpm ) ); // TREE_DRILL
m_ImageList->Add( KiBitmap( svg_file_xpm ) ); // TREE_SVG
m_ImageList->Add( KiBitmap( svg_file_xpm ) ); // TREE_SVG
m_ImageList->Add( KiBitmap( pagelayout_load_default_xpm ) );// TREE_PAGE_LAYOUT_DESCR
SetImageList( m_ImageList );
}

View File

@ -109,6 +109,9 @@ Creates a component (for Eeschema) or a footprint (for Pcbnew) that shows a B&W
btn = AddBitmapButton( ID_TO_PCB_CALCULATOR, KiBitmap( icon_pcbcalculator_xpm ) );
btn->SetToolTip( _( "Pcb calculator, the Swiss army knife..." ) );
btn = AddBitmapButton( ID_TO_PL_EDITOR, KiBitmap( icon_pagelayout_editor_xpm ) );
btn->SetToolTip( _( "pl_editor, the page layout and title block shape editor" ) );
}

View File

@ -133,10 +133,10 @@ void KICAD_MANAGER_FRAME::OnArchiveFiles( wxCommandEvent& event )
{
/* List of file extensions to save. */
static const wxChar* extentionList[] = {
wxT( "*.sch" ), wxT( "*.lib" ), wxT( "*.cmp" ),
wxT( "*.sch" ), wxT( "*.lib" ), wxT( "*.mod" ), wxT( "*.cmp" ),
wxT( "*.brd" ), wxT( "*.kicad_pcb" ),
wxT( "*.net" ), wxT( "*.pro" ), wxT( "*.pho" ), wxT( "*.py" ),
wxT( "*.pdf" ), wxT( "*.txt" ), wxT( "*.dcm" ),
wxT( "*.pdf" ), wxT( "*.txt" ), wxT( "*.dcm" ), wxT( "*.kicad_wks" ),
NULL
};

View File

@ -62,20 +62,21 @@ class TREE_PROJECT_FRAME;
enum TreeFileType {
TREE_PROJECT = 1,
TREE_SCHEMA, // Schematic file (.sch)
TREE_LEGACY_PCB, // board file (.brd) legacy format
TREE_SEXP_PCB, // board file (.kicad_brd) new s expression format
TREE_GERBER, // Gerber file (.pho, .g*)
TREE_PDF, // PDF file (.pdf)
TREE_TXT, // ascii text file (.txt)
TREE_NET, // netlist file (.net)
TREE_SCHEMA, // Schematic file (.sch)
TREE_LEGACY_PCB, // board file (.brd) legacy format
TREE_SEXP_PCB, // board file (.kicad_brd) new s expression format
TREE_GERBER, // Gerber file (.pho, .g*)
TREE_PDF, // PDF file (.pdf)
TREE_TXT, // ascii text file (.txt)
TREE_NET, // netlist file (.net)
TREE_UNKNOWN,
TREE_DIRECTORY,
TREE_CMP_LINK, // cmp/footprint link file (.cmp)
TREE_REPORT, // report file (.rpt)
TREE_FP_PLACE, // fooprints position (place) file (.pos)
TREE_DRILL, // Excellon drill file (.drl)
TREE_SVG, // SVG file (.svg)
TREE_CMP_LINK, // cmp/footprint link file (.cmp)
TREE_REPORT, // report file (.rpt)
TREE_FP_PLACE, // fooprints position (place) file (.pos)
TREE_DRILL, // Excellon drill file (.drl)
TREE_SVG, // SVG file (.svg)
TREE_PAGE_LAYOUT_DESCR, // Page layout and title block descr file (.kicad_wks)
TREE_MAX
};
@ -103,6 +104,7 @@ enum id_kicad_frm {
ID_TO_GERBVIEW,
ID_TO_BITMAP_CONVERTER,
ID_TO_PCB_CALCULATOR,
ID_TO_PL_EDITOR,
ID_BROWSE_AN_SELECT_FILE,
ID_SELECT_PREFERED_EDITOR,
ID_SELECT_PREFERED_PDF_BROWSER_NAME,
@ -160,6 +162,7 @@ public: KICAD_MANAGER_FRAME( wxWindow* parent, const wxString& title,
void OnRunGerbview( wxCommandEvent& event );
void OnRunBitmapConverter( wxCommandEvent& event );
void OnRunPcbCalculator( wxCommandEvent& event );
void OnRunPageLayoutEditor( wxCommandEvent& event );
void OnOpenTextEditor( wxCommandEvent& event );
void OnOpenFileInTextEditor( wxCommandEvent& event );

View File

@ -234,6 +234,11 @@ void KICAD_MANAGER_FRAME::OnRunPcbCalculator( wxCommandEvent& event )
Execute( this, PCB_CALCULATOR_EXE );
}
void KICAD_MANAGER_FRAME::OnRunPageLayoutEditor( wxCommandEvent& event )
{
Execute( this, PL_EDITOR_EXE );
}
void KICAD_MANAGER_FRAME::OnRunPcbNew( wxCommandEvent& event )
{

View File

@ -82,6 +82,7 @@ BEGIN_EVENT_TABLE( KICAD_MANAGER_FRAME, EDA_BASE_FRAME )
EVT_BUTTON( ID_TO_GERBVIEW, KICAD_MANAGER_FRAME::OnRunGerbview )
EVT_BUTTON( ID_TO_BITMAP_CONVERTER, KICAD_MANAGER_FRAME::OnRunBitmapConverter )
EVT_BUTTON( ID_TO_PCB_CALCULATOR, KICAD_MANAGER_FRAME::OnRunPcbCalculator )
EVT_BUTTON( ID_TO_PL_EDITOR, KICAD_MANAGER_FRAME::OnRunPageLayoutEditor )
EVT_UPDATE_UI( ID_SELECT_DEFAULT_PDF_BROWSER, KICAD_MANAGER_FRAME::OnUpdateDefaultPdfBrowser )
EVT_UPDATE_UI( ID_SELECT_PREFERED_PDF_BROWSER,

View File

@ -66,6 +66,7 @@ static const wxChar* s_allowedExtensionsToList[] =
wxT( "^.*\\.pdf$" ),
wxT( "^[^$].*\\.brd$" ), // Legacy Pcbnew files
wxT( "^[^$].*\\.kicad_pcb$" ), // S format Pcbnew files
wxT( "^[^$].*\\.kicad_wks$" ), // S format kicad page layout descr files
wxT( "^.*\\.net$" ),
wxT( "^.*\\.txt$" ),
wxT( "^.*\\.pho$" ), // Gerber file (Kicad extension)
@ -292,6 +293,10 @@ wxString TREE_PROJECT_FRAME::GetFileExt( TreeFileType type )
ext = SVGFileExtension;
break;
case TREE_PAGE_LAYOUT_DESCR:
ext = PageLayoutDescrFileExtension;
break;
default: /* Eliminates unnecessary GCC warning. */
break;
}
@ -358,6 +363,10 @@ wxString TREE_PROJECT_FRAME::GetFileWildcard( TreeFileType type )
ext = SVGFileWildcard;
break;
case TREE_PAGE_LAYOUT_DESCR:
ext = PageLayoutDescrFileWildcard;
break;
default: /* Eliminates unnecessary GCC warning. */
break;
}

View File

@ -0,0 +1,107 @@
add_definitions(-DPL_EDITOR)
###
# Includes
###
include_directories(BEFORE ${INC_BEFORE})
include_directories(
dialogs
../common/dialogs
${INC_AFTER}
)
###
# Sources
###
set(PL_EDITOR_SRCS
dialogs/properties_frame_base.cpp
dialogs/dialogs_for_printing.cpp
dialogs/dialog_new_dataitem_base.cpp
dialogs/dialog_new_dataitem.cpp
class_pl_editor_screen.cpp
class_pl_editor_layout.cpp
design_tree_frame.cpp
events_functions.cpp
controle.cpp
files.cpp
onleftclick.cpp
onrightclick.cpp
page_layout_writer.cpp
pl_editor.cpp
pl_editor_config.cpp
pl_editor_frame.cpp
properties_frame.cpp
hotkeys.cpp
menubar.cpp
toolbars_pl_editor.cpp
)
###
# We need some extra sources from common
###
set(PL_EDITOR_EXTRA_SRCS
../common/base_screen.cpp
../common/base_units.cpp
../common/eda_text.cpp
../common/class_page_info.cpp
../common/dialogs/dialog_page_settings.cpp
)
###
# Windows resource file
###
if(WIN32)
if(MINGW)
# PL_EDITOR_RESOURCES variable is set by the macro.
mingw_resource_compiler(pl_editor)
else(MINGW)
set(PL_EDITOR_RESOURCES pl_editor.rc)
endif(MINGW)
endif(WIN32)
###
# Apple resource files
###
if(APPLE)
set(PL_EDITOR_RESOURCES pl_editor.icns pl_editor_doc.icns)
set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/pl_editor.icns"
PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/pl_editor_doc.icns"
PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
set(MACOSX_BUNDLE_ICON_FILE pl_editor.icns)
set(MACOSX_BUNDLE_GUI_IDENTIFIER org.kicad-eda.pl_editor)
endif(APPLE)
###
# Create the pl_editor executable
###
add_executable(pl_editor WIN32 MACOSX_BUNDLE
${PL_EDITOR_SRCS}
${DIALOGS_SRCS}
${PL_EDITOR_EXTRA_SRCS}
${PL_EDITOR_RESOURCES})
###
# Set properties for APPLE on pl_editor target
###
if(APPLE)
set_target_properties(pl_editor PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)
endif(APPLE)
###
# Link executable target pl_editor with correct libraries
###
target_link_libraries(pl_editor common polygon bitmaps
${OPENGL_LIBRARIES}
${wxWidgets_LIBRARIES}
${GDI_PLUS_LIBRARIES})
###
# Add pl_editor as install target
###
install(TARGETS pl_editor
DESTINATION ${KICAD_BIN}
COMPONENT binary)

View File

@ -0,0 +1,30 @@
/**
* @file class_gbr_layout.cpp
* @brief PL_EDITOR_LAYOUT class functions.
*/
#include <limits.h>
#include <algorithm>
#include <fctsys.h>
#include <common.h>
#include <class_pl_editor_layout.h>
PL_EDITOR_LAYOUT::PL_EDITOR_LAYOUT()
{
PAGE_INFO pageInfo( wxT( "A4" ) );
SetPageSettings( pageInfo );
}
PL_EDITOR_LAYOUT::~PL_EDITOR_LAYOUT()
{
}
EDA_RECT PL_EDITOR_LAYOUT::ComputeBoundingBox()
{
EDA_RECT bbox;
SetBoundingBox( bbox );
return bbox;
}

View File

@ -0,0 +1,74 @@
/**
* @file class_pl_editor_layout.h
*/
#ifndef CLASS_PL_EDITOR_LAYOUT_H
#define CLASS_PL_EDITOR_LAYOUT_H
#include <base_struct.h> // PAGE_INFO
#include <common.h> // PAGE_INFO
#include <class_title_block.h>
class EDA_DRAW_PANEL;
/**
* Class PL_EDITOR_LAYOUT
* holds list of GERBER_DRAW_ITEM currently loaded.
*/
class PL_EDITOR_LAYOUT
{
private:
EDA_RECT m_BoundingBox;
PAGE_INFO m_paper;
TITLE_BLOCK m_titles;
public:
PL_EDITOR_LAYOUT();
~PL_EDITOR_LAYOUT();
const PAGE_INFO& GetPageSettings() const { return m_paper; }
void SetPageSettings( const PAGE_INFO& aPageSettings )
{
m_paper = aPageSettings;
}
const wxPoint& GetOriginAxisPosition() const
{
static wxPoint zero( 0, 0 );
return zero;
}
const TITLE_BLOCK& GetTitleBlock() const
{
return m_titles;
}
void SetTitleBlock( const TITLE_BLOCK& aTitleBlock )
{
m_titles = aTitleBlock;
}
/**
* Function ComputeBoundingBox
* calculates the bounding box containing all Gerber items.
* @return EDA_RECT - the full item list bounding box
*/
EDA_RECT ComputeBoundingBox();
/**
* Function GetBoundingBox
* may be called soon after ComputeBoundingBox() to return the same EDA_RECT,
* as long as the CLASS_PL_EDITOR_LAYOUT has not changed.
*/
EDA_RECT GetBoundingBox() const { return m_BoundingBox; } // override
void SetBoundingBox( const EDA_RECT& aBox ) { m_BoundingBox = aBox; }
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // overload
#endif
};
#endif // #ifndef CLASS_PL_EDITOR_LAYOUT_H

View File

@ -0,0 +1,94 @@
/**
* @file class_pl_editor_screen.cpp
*/
#include <fctsys.h>
#include <common.h>
#include <macros.h>
#include <class_pl_editor_screen.h>
#include <base_units.h>
#include <pl_editor_id.h>
#define MM_GRID( x ) wxRealPoint( x * IU_PER_MM, x * IU_PER_MM )
#define ZOOM_FACTOR( x ) ( x * IU_PER_MM / 1000 )
/**
Default zoom values.
Roughly a 1.5 progression.
*/
static const double pl_editorZoomList[] =
{
ZOOM_FACTOR( 5 ),
ZOOM_FACTOR( 7.0 ),
ZOOM_FACTOR( 10.0 ),
ZOOM_FACTOR( 15.0 ),
ZOOM_FACTOR( 22.0 ),
ZOOM_FACTOR( 35.0 ),
ZOOM_FACTOR( 50.0 ),
ZOOM_FACTOR( 80.0 ),
ZOOM_FACTOR( 120.0 ),
ZOOM_FACTOR( 200.0 ),
ZOOM_FACTOR( 350.0 ),
ZOOM_FACTOR( 500.0 ),
ZOOM_FACTOR( 750.0 ),
ZOOM_FACTOR( 1000.0 ),
ZOOM_FACTOR( 1500.0 ),
ZOOM_FACTOR( 2000.0 ),
ZOOM_FACTOR( 3000.0 ),
};
// Default grid sizes for PCB editor screens.
static GRID_TYPE pl_editorGridList[] =
{
// predefined grid list in mm
{ ID_POPUP_GRID_LEVEL_1MM, MM_GRID( 1.0 ) },
{ ID_POPUP_GRID_LEVEL_0_5MM, MM_GRID( 0.5 ) },
{ ID_POPUP_GRID_LEVEL_0_25MM, MM_GRID( 0.25 ) },
{ ID_POPUP_GRID_LEVEL_0_2MM, MM_GRID( 0.2 ) },
{ ID_POPUP_GRID_LEVEL_0_1MM, MM_GRID( 0.1 ) },
};
PL_EDITOR_SCREEN::PL_EDITOR_SCREEN( const wxSize& aPageSizeIU ) :
BASE_SCREEN( SCREEN_T )
{
for( unsigned i = 0; i < DIM( pl_editorZoomList ); ++i )
m_ZoomList.push_back( pl_editorZoomList[i] );
for( unsigned i = 0; i < DIM( pl_editorGridList ); ++i )
AddGrid( pl_editorGridList[i] );
// Set the working grid size to a reasonable value
SetGrid( MM_GRID( 1.0 ) );
SetZoom( ZOOM_FACTOR( 350 ) ); // a default value for zoom
InitDataPoints( aPageSizeIU );
m_NumberOfScreens = 2;
}
PL_EDITOR_SCREEN::~PL_EDITOR_SCREEN()
{
ClearUndoRedoList();
}
// virtual function
int PL_EDITOR_SCREEN::MilsToIuScalar()
{
return (int)IU_PER_MILS;
}
/* Virtual function needed by classes derived from BASE_SCREEN
* this is a virtual pure function in BASE_SCREEN
* do nothing in GerbView
* could be removed later
*/
void PL_EDITOR_SCREEN::ClearUndoORRedoList( UNDO_REDO_CONTAINER&, int )
{
}

View File

@ -0,0 +1,56 @@
/**
* @file class_pl_editor_layout.h
*/
#ifndef CLASS_PL_EDITOR_SCREEN_H_
#define CLASS_PL_EDITOR_SCREEN_H_
#include <base_units.h>
#include <class_base_screen.h>
class WORKSHEET_DATAITEM;
/* Handle info to display a board */
class PL_EDITOR_SCREEN : public BASE_SCREEN
{
public:
/**
* Constructor
* @param aPageSizeIU is the size of the initial paper page in internal units.
*/
PL_EDITOR_SCREEN( const wxSize& aPageSizeIU );
~PL_EDITOR_SCREEN();
virtual int MilsToIuScalar();
/**
* Function ClearUndoORRedoList
* virtual pure in BASE_SCREEN, so it must be defined here
*/
void ClearUndoORRedoList( UNDO_REDO_CONTAINER& aList, int aItemCount = -1 );
/**
* Function GetCurItem
* returns the currently selected WORKSHEET_DATAITEM, overriding
* BASE_SCREEN::GetCurItem().
* @return WORKSHEET_DATAITEM* - the one selected, or NULL.
*/
WORKSHEET_DATAITEM* GetCurItem() const
{
return (WORKSHEET_DATAITEM*) BASE_SCREEN::GetCurItem();
}
/**
* Function SetCurItem
* sets the currently selected object, m_CurrentItem.
* @param aItem Any object derived from WORKSHEET_DATAITEM
*/
void SetCurItem( WORKSHEET_DATAITEM* aItem ) { BASE_SCREEN::SetCurItem( (EDA_ITEM*)aItem ); }
};
#endif // CLASS_PL_EDITOR_SCREEN_H_

View File

@ -0,0 +1,112 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2013-2013 Jean-Pierre Charras jp.charras at wanadoo.fr
* Copyright (C) 2013-2013 KiCad Developers, see change_log.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
*/
/**
* @file pagelayout_editor/controle.cpp
*/
#include <fctsys.h>
#include <common.h>
#include <class_drawpanel.h>
#include <pl_editor_frame.h>
void PL_EDITOR_FRAME::GeneralControl( wxDC* aDC, const wxPoint& aPosition,
int aHotKey )
{
wxRealPoint gridSize;
wxPoint oldpos;
wxPoint pos = aPosition;
pos = GetScreen()->GetNearestGridPosition( pos );
oldpos = GetScreen()->GetCrossHairPosition();
gridSize = GetScreen()->GetGridSize();
switch( aHotKey )
{
case WXK_NUMPAD8:
case WXK_UP:
pos.y -= KiROUND( gridSize.y );
m_canvas->MoveCursor( pos );
break;
case WXK_NUMPAD2:
case WXK_DOWN:
pos.y += KiROUND( gridSize.y );
m_canvas->MoveCursor( pos );
break;
case WXK_NUMPAD4:
case WXK_LEFT:
pos.x -= KiROUND( gridSize.x );
m_canvas->MoveCursor( pos );
break;
case WXK_NUMPAD6:
case WXK_RIGHT:
pos.x += KiROUND( gridSize.x );
m_canvas->MoveCursor( pos );
break;
default:
break;
}
GetScreen()->SetCrossHairPosition( pos );
if( oldpos != GetScreen()->GetCrossHairPosition() )
{
pos = GetScreen()->GetCrossHairPosition();
GetScreen()->SetCrossHairPosition( oldpos );
m_canvas->CrossHairOff( aDC );
GetScreen()->SetCrossHairPosition( pos );
m_canvas->CrossHairOn( aDC );
if( m_canvas->IsMouseCaptured() )
{
#ifdef USE_WX_OVERLAY
wxDCOverlay oDC( m_overlay, (wxWindowDC*)aDC );
oDC.Clear();
m_canvas->CallMouseCapture( aDC, aPosition, false );
#else
m_canvas->CallMouseCapture( aDC, aPosition, true );
#endif
}
#ifdef USE_WX_OVERLAY
else
{
m_overlay.Reset();
}
#endif
}
if( aHotKey )
{
OnHotKey( aDC, aHotKey, aPosition );
}
UpdateStatusBar();
}

View File

@ -0,0 +1,266 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 1992-2013 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
*/
/**
* @file design_tree_frame.cpp
*/
#include <fctsys.h>
#include <worksheet_shape_builder.h>
#include <class_worksheet_dataitem.h>
#include <pl_editor_id.h>
#include <design_tree_frame.h>
/* XPM
* This bitmap is used to show item types
*/
static const char* root_xpm[] =
{
"12 12 2 1",
" c None",
"x c #008080",
" xxxx ",
" xxx ",
" xxx ",
" xxx ",
"xxxxxxxxxxx ",
"xxxxxxxxxxxx",
"xxxxxxxxxxx ",
" xxx ",
" xxx ",
" xxx ",
" xxxx ",
" "
};
static const char* line_xpm[] =
{
"12 12 2 1",
" c None",
"x c #008080",
"xx ",
"xx ",
"xx ",
"xx ",
"xx ",
"xx ",
"xx ",
"xx ",
"xx ",
"xx ",
"xxxxxxxxxxxx",
"xxxxxxxxxxxx"
};
static const char* rect_xpm[] =
{
"12 12 2 1",
" c None",
"x c #000080",
"xxxxxxxxxxxx",
"xxxxxxxxxxxx",
"xx xx",
"xx xx",
"xx xx",
"xx xx",
"xx xx",
"xx xx",
"xx xx",
"xx xx",
"xxxxxxxxxxxx",
"xxxxxxxxxxxx"
};
static const char* text_xpm[] =
{
"12 12 2 1",
" c None",
"x c #800000",
" xxxxxxxxxx ",
"xxxxxxxxxxxx",
"xx xx xx",
" xx ",
" xx ",
" xx ",
" xx ",
" xx ",
" xx ",
" xx ",
" xxxx ",
" xxxxxx "
};
static const char* poly_xpm[] =
{
"12 12 2 1",
" c None",
"x c #008000",
" xx ",
" xxxx ",
" xxxxxx ",
" xxxxxxxx ",
" xxxxxxxxxx ",
"xxxxxxxxxxxx",
"xxxxxxxxxxxx",
" xxxxxxxxxx ",
" xxxxxxxx ",
" xxxxxx ",
" xxxx ",
" xx "
};
// Event table:
DESIGN_TREE_FRAME::DESIGN_TREE_FRAME( PL_EDITOR_FRAME* aParent ) :
wxTreeCtrl( aParent, ID_DESIGN_TREE_FRAME )
{
// icons size is not know (depending on they are built)
// so get it:
wxSize iconsize;
wxBitmap root_bm( root_xpm );
iconsize.x = root_bm.GetWidth();
iconsize.y = root_bm.GetHeight();
// Make an image list containing small icons
m_imageList = new wxImageList( iconsize.x, iconsize.y, true, 4 );
m_imageList->Add( root_bm ); // root symbol
m_imageList->Add( wxBitmap( line_xpm ) ); // line item
m_imageList->Add( wxBitmap( rect_xpm ) ); // rect item
m_imageList->Add( wxBitmap( text_xpm ) ); // text item
m_imageList->Add( wxBitmap( poly_xpm ) ); // poly item
SetImageList( m_imageList );
}
DESIGN_TREE_FRAME::~DESIGN_TREE_FRAME()
{
delete m_imageList;
}
wxSize DESIGN_TREE_FRAME::GetMinSize() const
{
return wxSize( 100, -1 );
}
void DESIGN_TREE_FRAME::ReCreateDesignTree()
{
DeleteAllItems();
const WORKSHEET_LAYOUT& pglayout = WORKSHEET_LAYOUT::GetTheInstance();
// root tree:
wxFileName fn( ((PL_EDITOR_FRAME*) GetParent())->GetCurrFileName() );
wxTreeItemId rootitem;
if( fn.GetName().IsEmpty() )
rootitem = AddRoot( wxT( "<default>" ), 0, 0 );
else
rootitem = AddRoot( fn.GetName(), 0, 0 );
SetItemBold( rootitem, true );
// Now adding all current items
for( unsigned ii = 0; ii < pglayout.GetCount(); ii++ )
{
WORKSHEET_DATAITEM* item = pglayout.GetItem( ii );
int img = 0;
switch( item->GetType() )
{
case WORKSHEET_DATAITEM::WS_SEGMENT: img = 1; break;
case WORKSHEET_DATAITEM::WS_RECT: img = 2; break;
case WORKSHEET_DATAITEM::WS_TEXT: img = 3; break;
case WORKSHEET_DATAITEM::WS_POLYPOLYGON: img = 4; break;
}
wxTreeItemId cell= AppendItem( rootitem, item->m_Name, img, img );
DESIGN_TREE_ITEM_DATA* data = new DESIGN_TREE_ITEM_DATA( item );
SetItemData( cell, data );
}
Expand( rootitem );
}
// Select the tree item corresponding to the WORKSHEET_DATAITEM aItem
void DESIGN_TREE_FRAME::SelectCell( WORKSHEET_DATAITEM* aItem )
{
wxTreeItemId rootcell = GetRootItem();
wxTreeItemIdValue cookie;
wxTreeItemId cell = GetFirstChild( rootcell, cookie );
while( cell.IsOk() )
{
DESIGN_TREE_ITEM_DATA* data = (DESIGN_TREE_ITEM_DATA*) GetItemData( cell );
if( data->GetItem() == aItem )
{
SelectItem( cell );
return;
}
cell = GetNextChild( rootcell, cookie );
}
}
//return the page layout item managed by the cell
WORKSHEET_DATAITEM* DESIGN_TREE_FRAME::GetPageLayoutItem( wxTreeItemId aCell ) const
{
DESIGN_TREE_ITEM_DATA* data = (DESIGN_TREE_ITEM_DATA*) GetItemData( aCell );
if( data )
return data->GetItem();
else
return NULL;
}
/* return the page layout item managed by the selected cell (or NULL)
*/
WORKSHEET_DATAITEM* DESIGN_TREE_FRAME::GetPageLayoutSelectedItem() const
{
wxTreeItemId cell;
cell = GetSelection();
if( cell.IsOk() )
return GetPageLayoutItem( cell );
return NULL;
}
/* return the page layout item index managed by the selected cell (or -1)
*/
int DESIGN_TREE_FRAME::GetSelectedItemIndex()
{
WORKSHEET_DATAITEM*item = GetPageLayoutSelectedItem();
if( item == NULL )
return -1;
WORKSHEET_LAYOUT& pglayout = WORKSHEET_LAYOUT::GetTheInstance();
return pglayout.GetItemIndex( item );
}

View File

@ -0,0 +1,108 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 1992-2013 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
*/
/**
* @file design_tree_frame.h
*/
#ifndef _DESIGN_TREE_FRAME_H
#define _DESIGN_TREE_FRAME_H
#include <wx/treectrl.h>
#include <pl_editor_frame.h>
class WORKSHEET_DATAITEM;
/** class DESIGN_TREE_ITEM
* Handle one item for the page layoiut design
*/
class DESIGN_TREE_ITEM_DATA : public wxTreeItemData
{
private:
WORKSHEET_DATAITEM* m_wsItem; // the page layout item owned by me
public:
DESIGN_TREE_ITEM_DATA( WORKSHEET_DATAITEM* aItem = NULL )
{
m_wsItem = aItem;
}
/** @return the item managed by the cell
*/
WORKSHEET_DATAITEM* GetItem() const
{
return m_wsItem;
}
/** Set the link to the item managed by the cell
*/
void SetItem( WORKSHEET_DATAITEM* aItem )
{
m_wsItem = aItem;
}
};
/**
* Class DESIGN_TREE_FRAME is the left window showing the list of items
*/
class DESIGN_TREE_FRAME : protected wxTreeCtrl
{
friend class PL_EDITOR_FRAME;
private:
wxImageList* m_imageList;
public:
DESIGN_TREE_FRAME( PL_EDITOR_FRAME* aParent );
~DESIGN_TREE_FRAME();
void ReCreateDesignTree();
wxSize GetMinSize() const;
/** @return the page layout item managed by the cell
*/
WORKSHEET_DATAITEM* GetPageLayoutItem(wxTreeItemId aCell) const;
/** @return the page layout item managed by the selected cell (or NULL)
*/
WORKSHEET_DATAITEM* GetPageLayoutSelectedItem() const;
/** @return the page layout item index managed by the selected cell (or -1)
*/
int GetSelectedItemIndex();
// Select the tree item corresponding to the WORKSHEET_DATAITEM aItem
void SelectCell( WORKSHEET_DATAITEM* aItem );
void SelectCell( const wxTreeItemId &aTreeItem, bool aSelect=true )
{
SelectItem( aTreeItem, aSelect );
}
};
#endif /* _DESIGN_TREE_FRAME_H */

View File

@ -0,0 +1,177 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2013 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
*/
/**
* @file dialog_new_dataitem.cpp
* @brief a dialog called on creating a new plage layout data item.
*/
#include <fctsys.h>
#include <common.h>
#include <class_drawpanel.h>
#include <pl_editor_frame.h>
#include <class_worksheet_dataitem.h>
#include <dialog_new_dataitem_base.h>
class DIALOG_NEW_DATAITEM : public DIALOG_NEW_DATAITEM_BASE
{
WORKSHEET_DATAITEM* m_item;
public:
DIALOG_NEW_DATAITEM( PL_EDITOR_FRAME* aCaller, WORKSHEET_DATAITEM* aItem );
private:
void OnCancelClick( wxCommandEvent& event );
void OnOKClick( wxCommandEvent& event );
void initDlg();
};
int InvokeDialogNewItem( PL_EDITOR_FRAME* aCaller, WORKSHEET_DATAITEM* aItem )
{
DIALOG_NEW_DATAITEM dlg( aCaller, aItem );
return dlg.ShowModal();
}
DIALOG_NEW_DATAITEM::DIALOG_NEW_DATAITEM( PL_EDITOR_FRAME* aCaller,
WORKSHEET_DATAITEM* aItem )
: DIALOG_NEW_DATAITEM_BASE( aCaller )
{
m_item = aItem;
initDlg();
GetSizer()->SetSizeHints( this );
Centre();
}
void DIALOG_NEW_DATAITEM::OnCancelClick( wxCommandEvent& event )
{
EndModal( wxID_CANCEL);
}
void DIALOG_NEW_DATAITEM::OnOKClick( wxCommandEvent& event )
{
if( m_item->GetType() == WORKSHEET_DATAITEM::WS_TEXT )
((WORKSHEET_DATAITEM_TEXT*)m_item)->m_TextBase = m_textCtrlText->GetValue();
wxString msg;
// Import Start point
double dtmp;
msg = m_textCtrlPosX->GetValue();
msg.ToDouble( &dtmp );
m_item->m_Pos.m_Pos.x = dtmp;
msg = m_textCtrlPosY->GetValue();
msg.ToDouble( &dtmp );
m_item->m_Pos.m_Pos.y = dtmp;
switch( m_choiceCornerPos->GetSelection() )
{
case 2: m_item->m_Pos.m_Anchor = RB_CORNER; break;
case 0: m_item->m_Pos.m_Anchor = RT_CORNER; break;
case 3: m_item->m_Pos.m_Anchor = LB_CORNER; break;
case 1: m_item->m_Pos.m_Anchor = LT_CORNER; break;
}
// Import End point
msg = m_textCtrlEndX->GetValue();
msg.ToDouble( &dtmp );
m_item->m_End.m_Pos.x = dtmp;
msg = m_textCtrlEndY->GetValue();
msg.ToDouble( &dtmp );
m_item->m_End.m_Pos.y = dtmp;
switch( m_choiceCornerEnd->GetSelection() )
{
case 2: m_item->m_End.m_Anchor = RB_CORNER; break;
case 0: m_item->m_End.m_Anchor = RT_CORNER; break;
case 3: m_item->m_End.m_Anchor = LB_CORNER; break;
case 1: m_item->m_End.m_Anchor = LT_CORNER; break;
}
EndModal( wxID_OK);
}
void DIALOG_NEW_DATAITEM::initDlg()
{
// Disable useless widgets, depending on WORKSHEET_DATAITEM type
switch( m_item->GetType() )
{
case WORKSHEET_DATAITEM::WS_SEGMENT:
case WORKSHEET_DATAITEM::WS_RECT:
m_textCtrlText->Enable( false );
break;
case WORKSHEET_DATAITEM::WS_POLYPOLYGON:
m_textCtrlText->Enable( false );
// fall through
case WORKSHEET_DATAITEM::WS_TEXT:
m_textCtrlEndX->Enable( false );
m_textCtrlEndY->Enable( false );
break;
}
wxString msg;
// Position/ start point
msg.Printf( wxT("%.3f"), m_item->m_Pos.m_Pos.x );
m_textCtrlPosX->SetValue( msg );
msg.Printf( wxT("%.3f"), m_item->m_Pos.m_Pos.y );
m_textCtrlPosY->SetValue( msg );
switch( m_item->m_Pos.m_Anchor )
{
case RB_CORNER: // right bottom corner
m_choiceCornerPos->SetSelection( 2 ); break;
case RT_CORNER: // right top corner
m_choiceCornerPos->SetSelection( 0 ); break;
case LB_CORNER: // left bottom corner
m_choiceCornerPos->SetSelection( 3 ); break;
case LT_CORNER: // left top corner
m_choiceCornerPos->SetSelection( 1 ); break;
}
// End point
msg.Printf( wxT("%.3f"), m_item->m_End.m_Pos.x );
m_textCtrlEndX->SetValue( msg );
msg.Printf( wxT("%.3f"), m_item->m_End.m_Pos.y );
m_textCtrlEndY->SetValue( msg );
switch( m_item->m_End.m_Anchor )
{
case RB_CORNER: // right bottom corner
m_choiceCornerEnd->SetSelection( 2 ); break;
case RT_CORNER: // right top corner
m_choiceCornerEnd->SetSelection( 0 ); break;
case LB_CORNER: // left bottom corner
m_choiceCornerEnd->SetSelection( 3 ); break;
case LT_CORNER: // left top corner
m_choiceCornerEnd->SetSelection( 1 ); break;
}
if( m_item->GetType() == WORKSHEET_DATAITEM::WS_TEXT )
m_textCtrlText->SetValue( ((WORKSHEET_DATAITEM_TEXT*)m_item)->m_TextBase );
}

View File

@ -0,0 +1,155 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Oct 8 2012)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "dialog_new_dataitem_base.h"
///////////////////////////////////////////////////////////////////////////
DIALOG_NEW_DATAITEM_BASE::DIALOG_NEW_DATAITEM_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
{
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
wxBoxSizer* bSizerMain;
bSizerMain = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* bSizerUpper;
bSizerUpper = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* bSizerPos;
bSizerPos = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizerPosXY;
bSizerPosXY = new wxBoxSizer( wxVERTICAL );
m_staticTextPosX = new wxStaticText( this, wxID_ANY, _("Pos X (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextPosX->Wrap( -1 );
bSizerPosXY->Add( m_staticTextPosX, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlPosX = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizerPosXY->Add( m_textCtrlPosX, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
m_staticTextPosY = new wxStaticText( this, wxID_ANY, _("Pos Y (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextPosY->Wrap( -1 );
bSizerPosXY->Add( m_staticTextPosY, 0, wxRIGHT|wxLEFT, 5 );
m_textCtrlPosY = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizerPosXY->Add( m_textCtrlPosY, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
bSizerPos->Add( bSizerPosXY, 1, wxEXPAND, 5 );
wxBoxSizer* bSizer6;
bSizer6 = new wxBoxSizer( wxVERTICAL );
m_staticTextOrgPos = new wxStaticText( this, wxID_ANY, _("Origin"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextOrgPos->Wrap( -1 );
bSizer6->Add( m_staticTextOrgPos, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
wxString m_choiceCornerPosChoices[] = { _("Upper Right"), _("Upper Left"), _("Lower Right"), _("Lower Left") };
int m_choiceCornerPosNChoices = sizeof( m_choiceCornerPosChoices ) / sizeof( wxString );
m_choiceCornerPos = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceCornerPosNChoices, m_choiceCornerPosChoices, 0 );
m_choiceCornerPos->SetSelection( 2 );
bSizer6->Add( m_choiceCornerPos, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
bSizerPos->Add( bSizer6, 0, wxALIGN_CENTER_VERTICAL, 5 );
bSizerUpper->Add( bSizerPos, 1, wxEXPAND, 5 );
m_staticline2 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerUpper->Add( m_staticline2, 0, wxEXPAND | wxALL, 5 );
m_SizerEndPosition = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizerEndXY;
bSizerEndXY = new wxBoxSizer( wxVERTICAL );
m_staticTextEndX = new wxStaticText( this, wxID_ANY, _("End X (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextEndX->Wrap( -1 );
bSizerEndXY->Add( m_staticTextEndX, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlEndX = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizerEndXY->Add( m_textCtrlEndX, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
m_staticTextEndY = new wxStaticText( this, wxID_ANY, _("End Y (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextEndY->Wrap( -1 );
bSizerEndXY->Add( m_staticTextEndY, 0, wxRIGHT|wxLEFT, 5 );
m_textCtrlEndY = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizerEndXY->Add( m_textCtrlEndY, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
m_SizerEndPosition->Add( bSizerEndXY, 1, 0, 5 );
wxBoxSizer* bSizer61;
bSizer61 = new wxBoxSizer( wxVERTICAL );
m_staticTextOrgPos1 = new wxStaticText( this, wxID_ANY, _("Origin"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextOrgPos1->Wrap( -1 );
bSizer61->Add( m_staticTextOrgPos1, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
wxString m_choiceCornerEndChoices[] = { _("Upper Right"), _("Upper Left"), _("Lower Right"), _("Lower Left") };
int m_choiceCornerEndNChoices = sizeof( m_choiceCornerEndChoices ) / sizeof( wxString );
m_choiceCornerEnd = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceCornerEndNChoices, m_choiceCornerEndChoices, 0 );
m_choiceCornerEnd->SetSelection( 2 );
bSizer61->Add( m_choiceCornerEnd, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_SizerEndPosition->Add( bSizer61, 0, wxALIGN_CENTER_VERTICAL, 5 );
bSizerUpper->Add( m_SizerEndPosition, 1, wxEXPAND, 5 );
m_staticlineEndXY = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerUpper->Add( m_staticlineEndXY, 0, wxEXPAND | wxALL, 5 );
m_SizerText = new wxBoxSizer( wxVERTICAL );
m_staticText10 = new wxStaticText( this, wxID_ANY, _("Text"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText10->Wrap( -1 );
m_SizerText->Add( m_staticText10, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlText = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_SizerText->Add( m_textCtrlText, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_staticline3 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
m_SizerText->Add( m_staticline3, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
bSizerUpper->Add( m_SizerText, 0, wxEXPAND, 5 );
bSizerMain->Add( bSizerUpper, 1, wxEXPAND, 5 );
m_sdbSizerButtons = new wxStdDialogButtonSizer();
m_sdbSizerButtonsOK = new wxButton( this, wxID_OK );
m_sdbSizerButtons->AddButton( m_sdbSizerButtonsOK );
m_sdbSizerButtonsCancel = new wxButton( this, wxID_CANCEL );
m_sdbSizerButtons->AddButton( m_sdbSizerButtonsCancel );
m_sdbSizerButtons->Realize();
bSizerMain->Add( m_sdbSizerButtons, 0, wxEXPAND, 5 );
this->SetSizer( bSizerMain );
this->Layout();
this->Centre( wxBOTH );
// Connect Events
m_sdbSizerButtonsCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_NEW_DATAITEM_BASE::OnCancelClick ), NULL, this );
m_sdbSizerButtonsOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_NEW_DATAITEM_BASE::OnOKClick ), NULL, this );
}
DIALOG_NEW_DATAITEM_BASE::~DIALOG_NEW_DATAITEM_BASE()
{
// Disconnect Events
m_sdbSizerButtonsCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_NEW_DATAITEM_BASE::OnCancelClick ), NULL, this );
m_sdbSizerButtonsOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_NEW_DATAITEM_BASE::OnOKClick ), NULL, this );
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,76 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Oct 8 2012)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __DIALOG_NEW_DATAITEM_BASE_H__
#define __DIALOG_NEW_DATAITEM_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/sizer.h>
#include <wx/choice.h>
#include <wx/statline.h>
#include <wx/button.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_NEW_DATAITEM_BASE
///////////////////////////////////////////////////////////////////////////////
class DIALOG_NEW_DATAITEM_BASE : public DIALOG_SHIM
{
private:
protected:
wxStaticText* m_staticTextPosX;
wxTextCtrl* m_textCtrlPosX;
wxStaticText* m_staticTextPosY;
wxTextCtrl* m_textCtrlPosY;
wxStaticText* m_staticTextOrgPos;
wxChoice* m_choiceCornerPos;
wxStaticLine* m_staticline2;
wxBoxSizer* m_SizerEndPosition;
wxStaticText* m_staticTextEndX;
wxTextCtrl* m_textCtrlEndX;
wxStaticText* m_staticTextEndY;
wxTextCtrl* m_textCtrlEndY;
wxStaticText* m_staticTextOrgPos1;
wxChoice* m_choiceCornerEnd;
wxStaticLine* m_staticlineEndXY;
wxBoxSizer* m_SizerText;
wxStaticText* m_staticText10;
wxTextCtrl* m_textCtrlText;
wxStaticLine* m_staticline3;
wxStdDialogButtonSizer* m_sdbSizerButtons;
wxButton* m_sdbSizerButtonsOK;
wxButton* m_sdbSizerButtonsCancel;
// Virtual event handlers, overide them in your derived class
virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnOKClick( wxCommandEvent& event ) { event.Skip(); }
public:
DIALOG_NEW_DATAITEM_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("New Item"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 328,290 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_NEW_DATAITEM_BASE();
};
#endif //__DIALOG_NEW_DATAITEM_BASE_H__

View File

@ -0,0 +1,237 @@
/**
* @file dialogs_for_printing.cpp
*/
/* Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 1992-2013 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
*/
#include <fctsys.h>
#include <gr_basic.h>
#include <class_drawpanel.h>
#include <base_units.h>
#include <pl_editor_frame.h>
#include <pl_editor_id.h>
#include <dialog_helpers.h>
#include <worksheet_shape_builder.h>
#include <class_worksheet_dataitem.h>
#include <dialog_page_settings.h>
#include <invoke_pl_editor_dialog.h>
/**
* Custom print out for printing schematics.
*/
class PLEDITOR_PRINTOUT : public wxPrintout
{
private:
PL_EDITOR_FRAME* m_parent;
public:
PLEDITOR_PRINTOUT( PL_EDITOR_FRAME* aParent, const wxString& aTitle ) :
wxPrintout( aTitle )
{
wxASSERT( aParent != NULL );
m_parent = aParent;
}
bool OnPrintPage( int aPageNum );
bool HasPage( int aPageNum ) { return ( aPageNum <= 2 ); }
void GetPageInfo( int* minPage, int* maxPage, int* selPageFrom, int* selPageTo );
void DrawPage( int aPageNum );
};
/**
* Custom print preview frame.
*/
class PLEDITOR_PREVIEW_FRAME : public wxPreviewFrame
{
public:
PLEDITOR_PREVIEW_FRAME( wxPrintPreview* aPreview, PL_EDITOR_FRAME* aParent,
const wxString& aTitle, const wxPoint& aPos = wxDefaultPosition,
const wxSize& aSize = wxDefaultSize ) :
wxPreviewFrame( aPreview, aParent, aTitle, aPos, aSize )
{
}
bool Show( bool show ) // overload
{
bool ret;
// Show or hide the window. If hiding, save current position and size.
// If showing, use previous position and size.
if( show )
{
ret = wxPreviewFrame::Show( show );
if( s_size.x != 0 && s_size.y != 0 )
SetSize( s_pos.x, s_pos.y, s_size.x, s_size.y, 0 );
}
else
{
// Save the dialog's position & size before hiding
s_size = GetSize();
s_pos = GetPosition();
ret = wxPreviewFrame::Show( show );
}
return ret;
}
private:
static wxPoint s_pos;
static wxSize s_size;
DECLARE_CLASS( PLEDITOR_PREVIEW_FRAME )
DECLARE_EVENT_TABLE()
DECLARE_NO_COPY_CLASS( PLEDITOR_PREVIEW_FRAME )
};
wxPoint PLEDITOR_PREVIEW_FRAME::s_pos;
wxSize PLEDITOR_PREVIEW_FRAME::s_size;
IMPLEMENT_CLASS( PLEDITOR_PREVIEW_FRAME, wxPreviewFrame )
BEGIN_EVENT_TABLE( PLEDITOR_PREVIEW_FRAME, wxPreviewFrame )
EVT_CLOSE( PLEDITOR_PREVIEW_FRAME::OnCloseWindow )
END_EVENT_TABLE()
bool PLEDITOR_PRINTOUT::OnPrintPage( int aPageNum )
{
DrawPage( aPageNum );
return true;
}
void PLEDITOR_PRINTOUT::GetPageInfo( int* minPage, int* maxPage,
int* selPageFrom, int* selPageTo )
{
*minPage = *selPageFrom = 1;
*maxPage = *selPageTo = 2;
}
/*
* This is the real print function: print the active screen
*/
void PLEDITOR_PRINTOUT::DrawPage( int aPageNum )
{
int oldZoom;
wxPoint tmp_startvisu;
wxSize pageSizeIU; // Page size in internal units
wxPoint old_org;
EDA_RECT oldClipBox;
wxRect fitRect;
wxDC* dc = GetDC();
EDA_DRAW_PANEL* panel = m_parent->GetCanvas();
PL_EDITOR_SCREEN* screen = m_parent->GetScreen();
// Save current scale factor, offsets, and clip box.
tmp_startvisu = screen->m_StartVisu;
oldZoom = screen->GetZoom();
old_org = screen->m_DrawOrg;
oldClipBox = *panel->GetClipBox();
// Change clip box to print the whole page.
#define MAX_VALUE (INT_MAX/2) // MAX_VALUE is the max we can use in an integer
// and that allows calculations without overflow
panel->SetClipBox( EDA_RECT( wxPoint( 0, 0 ), wxSize( MAX_VALUE, MAX_VALUE ) ) );
// Change scale factor and offset to print the whole page.
pageSizeIU = m_parent->GetPageSettings().GetSizeIU();
FitThisSizeToPaper( pageSizeIU );
fitRect = GetLogicalPaperRect();
int xoffset = ( fitRect.width - pageSizeIU.x ) / 2;
int yoffset = ( fitRect.height - pageSizeIU.y ) / 2;
OffsetLogicalOrigin( xoffset, yoffset );
GRResetPenAndBrush( dc );
GRForceBlackPen( true );
screen->m_IsPrinting = true;
EDA_COLOR_T bg_color = g_DrawBgColor;
g_DrawBgColor = WHITE;
screen->m_ScreenNumber = aPageNum;
m_parent->DrawWorkSheet( dc, screen, 0, IU_PER_MILS, wxEmptyString );
g_DrawBgColor = bg_color;
screen->m_IsPrinting = false;
panel->SetClipBox( oldClipBox );
GRForceBlackPen( false );
screen->m_StartVisu = tmp_startvisu;
screen->m_DrawOrg = old_org;
screen->SetZoom( oldZoom );
}
int InvokeDialogPrint( PL_EDITOR_FRAME* aCaller, wxPrintData* aPrintData,
wxPageSetupDialogData* aPageSetupData )
{
PLEDITOR_PRINTOUT dlg( aCaller, _("Print Page Layout") );
int pageCount = 2;
wxPrintDialogData printDialogData( *aPrintData );
printDialogData.SetMaxPage( pageCount );
if( pageCount > 1 )
printDialogData.EnablePageNumbers( true );
wxPrinter printer( &printDialogData );
PLEDITOR_PRINTOUT printout( aCaller, _( "Print Page Layout" ) );
if( !printer.Print( aCaller, &printout, true ) )
{
if( wxPrinter::GetLastError() == wxPRINTER_ERROR )
wxMessageBox( _( "An error occurred attempting to print the page layout." ),
_( "Printing" ), wxOK );
return 0;
}
*aPageSetupData = printer.GetPrintDialogData().GetPrintData();
return 1;
}
int InvokeDialogPrintPreview( PL_EDITOR_FRAME* aCaller, wxPrintData* aPrintData )
{
// Pass two printout objects: for preview, and possible printing.
wxString title = _( "Preview" );
wxPrintPreview* preview = new wxPrintPreview( new PLEDITOR_PRINTOUT( aCaller, title ),
new PLEDITOR_PRINTOUT( aCaller, title ),
aPrintData );
preview->SetZoom( 100 );
PLEDITOR_PREVIEW_FRAME* frame = new PLEDITOR_PREVIEW_FRAME( preview, aCaller, title );
frame->Initialize();
frame->Center();
frame->Show( true );
return 1;
}

View File

@ -0,0 +1,532 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Oct 8 2012)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "properties_frame_base.h"
///////////////////////////////////////////////////////////////////////////
PANEL_PROPERTIES_BASE::PANEL_PROPERTIES_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style )
{
wxBoxSizer* bSizerpanel;
bSizerpanel = new wxBoxSizer( wxVERTICAL );
m_scrolledLeftWindow = new wxScrolledWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
m_scrolledLeftWindow->SetScrollRate( 5, 5 );
wxBoxSizer* bSizerMain;
bSizerMain = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* bSizerGeneralOpts;
bSizerGeneralOpts = new wxBoxSizer( wxVERTICAL );
m_staticTextDefVal = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Default Values:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextDefVal->Wrap( -1 );
bSizerGeneralOpts->Add( m_staticTextDefVal, 0, wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizerDefTextSize;
bSizerDefTextSize = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizerDefTsizeX;
bSizerDefTsizeX = new wxBoxSizer( wxVERTICAL );
m_staticTextDefTsX = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Text Size X (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextDefTsX->Wrap( -1 );
bSizerDefTsizeX->Add( m_staticTextDefTsX, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlDefaultTextSizeX = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizerDefTsizeX->Add( m_textCtrlDefaultTextSizeX, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
bSizerDefTextSize->Add( bSizerDefTsizeX, 1, wxEXPAND, 5 );
wxBoxSizer* bSizerDefTsizeY;
bSizerDefTsizeY = new wxBoxSizer( wxVERTICAL );
m_staticTextDefTsY = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Text Size Y (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextDefTsY->Wrap( -1 );
bSizerDefTsizeY->Add( m_staticTextDefTsY, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlDefaultTextSizeY = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizerDefTsizeY->Add( m_textCtrlDefaultTextSizeY, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
bSizerDefTextSize->Add( bSizerDefTsizeY, 1, wxEXPAND, 5 );
bSizerGeneralOpts->Add( bSizerDefTextSize, 0, wxEXPAND, 5 );
wxBoxSizer* bSizerDefLineWidth;
bSizerDefLineWidth = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizer25;
bSizer25 = new wxBoxSizer( wxVERTICAL );
m_staticTextDefLineW = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Line Thickness (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextDefLineW->Wrap( -1 );
bSizer25->Add( m_staticTextDefLineW, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlDefaultLineWidth = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizer25->Add( m_textCtrlDefaultLineWidth, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
bSizerDefLineWidth->Add( bSizer25, 1, 0, 5 );
wxBoxSizer* bSizerDefTextThickness;
bSizerDefTextThickness = new wxBoxSizer( wxVERTICAL );
m_staticText22 = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Text Thickness"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText22->Wrap( -1 );
bSizerDefTextThickness->Add( m_staticText22, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlDefaultTextThickness = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizerDefTextThickness->Add( m_textCtrlDefaultTextThickness, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
bSizerDefLineWidth->Add( bSizerDefTextThickness, 1, 0, 5 );
bSizerGeneralOpts->Add( bSizerDefLineWidth, 0, wxEXPAND, 5 );
bSizerMain->Add( bSizerGeneralOpts, 0, 0, 5 );
m_staticline7 = new wxStaticLine( m_scrolledLeftWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerMain->Add( m_staticline7, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_buttonOK = new wxButton( m_scrolledLeftWindow, wxID_ANY, _("Accept"), wxDefaultPosition, wxDefaultSize, 0 );
m_buttonOK->SetDefault();
bSizerMain->Add( m_buttonOK, 0, wxALIGN_BOTTOM|wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_HORIZONTAL, 5 );
m_staticline8 = new wxStaticLine( m_scrolledLeftWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerMain->Add( m_staticline8, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizerButt;
bSizerButt = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizerType;
bSizerType = new wxBoxSizer( wxVERTICAL );
m_staticTextType = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Type"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextType->Wrap( -1 );
m_staticTextType->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) );
bSizerType->Add( m_staticTextType, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
m_textCtrlType = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY );
bSizerType->Add( m_textCtrlType, 0, wxRIGHT|wxLEFT, 5 );
bSizerButt->Add( bSizerType, 0, 0, 5 );
wxBoxSizer* bSizerPageOpt;
bSizerPageOpt = new wxBoxSizer( wxVERTICAL );
m_staticTextPageOpt = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Page 1 option"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextPageOpt->Wrap( -1 );
m_staticTextPageOpt->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString ) );
bSizerPageOpt->Add( m_staticTextPageOpt, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
wxString m_choicePageOptChoices[] = { _("None"), _("Page 1 only"), _("Not on page 1") };
int m_choicePageOptNChoices = sizeof( m_choicePageOptChoices ) / sizeof( wxString );
m_choicePageOpt = new wxChoice( m_scrolledLeftWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choicePageOptNChoices, m_choicePageOptChoices, 0 );
m_choicePageOpt->SetSelection( 0 );
bSizerPageOpt->Add( m_choicePageOpt, 0, wxRIGHT|wxLEFT, 5 );
bSizerButt->Add( bSizerPageOpt, 0, 0, 5 );
bSizerMain->Add( bSizerButt, 0, 0, 5 );
m_staticline5 = new wxStaticLine( m_scrolledLeftWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerMain->Add( m_staticline5, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
m_SizerTextOptions = new wxBoxSizer( wxVERTICAL );
m_staticTextText = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Text"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextText->Wrap( -1 );
m_SizerTextOptions->Add( m_staticTextText, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlText = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_SizerTextOptions->Add( m_textCtrlText, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
wxBoxSizer* bSizerFontOpt;
bSizerFontOpt = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* bSizerJustify;
bSizerJustify = new wxBoxSizer( wxHORIZONTAL );
m_staticTextHjust = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("H justification"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextHjust->Wrap( -1 );
bSizerJustify->Add( m_staticTextHjust, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
wxString m_choiceHjustifyChoices[] = { _("Left"), _("Center"), _("Right") };
int m_choiceHjustifyNChoices = sizeof( m_choiceHjustifyChoices ) / sizeof( wxString );
m_choiceHjustify = new wxChoice( m_scrolledLeftWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceHjustifyNChoices, m_choiceHjustifyChoices, 0 );
m_choiceHjustify->SetSelection( 0 );
bSizerJustify->Add( m_choiceHjustify, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
m_checkBoxBold = new wxCheckBox( m_scrolledLeftWindow, wxID_ANY, _("Bold"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerJustify->Add( m_checkBoxBold, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
bSizerFontOpt->Add( bSizerJustify, 0, wxALIGN_CENTER_VERTICAL, 5 );
wxBoxSizer* bSizerBoldItalic;
bSizerBoldItalic = new wxBoxSizer( wxHORIZONTAL );
m_staticTextVjust = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("V justification"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextVjust->Wrap( -1 );
bSizerBoldItalic->Add( m_staticTextVjust, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
wxString m_choiceVjustifyChoices[] = { _("Top"), _("Center"), _("Bottom") };
int m_choiceVjustifyNChoices = sizeof( m_choiceVjustifyChoices ) / sizeof( wxString );
m_choiceVjustify = new wxChoice( m_scrolledLeftWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceVjustifyNChoices, m_choiceVjustifyChoices, 0 );
m_choiceVjustify->SetSelection( 1 );
bSizerBoldItalic->Add( m_choiceVjustify, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
m_checkBoxItalic = new wxCheckBox( m_scrolledLeftWindow, wxID_ANY, _("Italic"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerBoldItalic->Add( m_checkBoxItalic, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
bSizerFontOpt->Add( bSizerBoldItalic, 1, wxALIGN_CENTER_VERTICAL, 5 );
m_SizerTextOptions->Add( bSizerFontOpt, 0, wxEXPAND, 5 );
wxBoxSizer* bSizerTextSize;
bSizerTextSize = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizerTsizeX;
bSizerTsizeX = new wxBoxSizer( wxVERTICAL );
m_staticTexTsizeX = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Text Height (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTexTsizeX->Wrap( -1 );
bSizerTsizeX->Add( m_staticTexTsizeX, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlTextSizeX = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizerTsizeX->Add( m_textCtrlTextSizeX, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
bSizerTextSize->Add( bSizerTsizeX, 1, wxEXPAND, 5 );
wxBoxSizer* bSizerTsizeY;
bSizerTsizeY = new wxBoxSizer( wxVERTICAL );
m_staticTextTsizeY = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Text Width (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextTsizeY->Wrap( -1 );
bSizerTsizeY->Add( m_staticTextTsizeY, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlTextSizeY = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizerTsizeY->Add( m_textCtrlTextSizeY, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
bSizerTextSize->Add( bSizerTsizeY, 1, wxEXPAND, 5 );
m_SizerTextOptions->Add( bSizerTextSize, 0, 0, 5 );
m_staticTextConstraints = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Constraints:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextConstraints->Wrap( -1 );
m_SizerTextOptions->Add( m_staticTextConstraints, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizerConstraints;
bSizerConstraints = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizer42;
bSizer42 = new wxBoxSizer( wxVERTICAL );
m_staticTextConstraintX = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Max Size X (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextConstraintX->Wrap( -1 );
bSizer42->Add( m_staticTextConstraintX, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlConstraintX = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizer42->Add( m_textCtrlConstraintX, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
bSizerConstraints->Add( bSizer42, 1, wxEXPAND, 5 );
wxBoxSizer* bSizer52;
bSizer52 = new wxBoxSizer( wxVERTICAL );
m_staticTextConstraintY = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Max Size Y (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextConstraintY->Wrap( -1 );
bSizer52->Add( m_staticTextConstraintY, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlConstraintY = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizer52->Add( m_textCtrlConstraintY, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
bSizerConstraints->Add( bSizer52, 1, wxEXPAND, 5 );
m_SizerTextOptions->Add( bSizerConstraints, 0, 0, 5 );
m_staticline6 = new wxStaticLine( m_scrolledLeftWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
m_SizerTextOptions->Add( m_staticline6, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
bSizerMain->Add( m_SizerTextOptions, 0, wxEXPAND, 5 );
m_staticTextComment = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Comment"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextComment->Wrap( -1 );
bSizerMain->Add( m_staticTextComment, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlComment = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizerMain->Add( m_textCtrlComment, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
m_staticline2 = new wxStaticLine( m_scrolledLeftWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerMain->Add( m_staticline2, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizerPos;
bSizerPos = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizerPosXY;
bSizerPosXY = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* bSizer4;
bSizer4 = new wxBoxSizer( wxVERTICAL );
m_staticTextPosX = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Pos X (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextPosX->Wrap( -1 );
bSizer4->Add( m_staticTextPosX, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlPosX = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizer4->Add( m_textCtrlPosX, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
bSizerPosXY->Add( bSizer4, 1, wxEXPAND, 5 );
wxBoxSizer* bSizer5;
bSizer5 = new wxBoxSizer( wxVERTICAL );
m_staticTextPosY = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Pos Y (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextPosY->Wrap( -1 );
bSizer5->Add( m_staticTextPosY, 0, wxRIGHT|wxLEFT, 5 );
m_textCtrlPosY = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizer5->Add( m_textCtrlPosY, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
bSizerPosXY->Add( bSizer5, 1, wxEXPAND, 5 );
bSizerPos->Add( bSizerPosXY, 1, 0, 5 );
wxBoxSizer* bSizer6;
bSizer6 = new wxBoxSizer( wxVERTICAL );
m_staticTextOrgPos = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Origin"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextOrgPos->Wrap( -1 );
bSizer6->Add( m_staticTextOrgPos, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_comboBoxCornerPos = new wxComboBox( m_scrolledLeftWindow, wxID_ANY, _("Lower Right"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
m_comboBoxCornerPos->Append( _("Upper Right") );
m_comboBoxCornerPos->Append( _("Upper Left") );
m_comboBoxCornerPos->Append( _("Lower Right") );
m_comboBoxCornerPos->Append( _("Lower Left") );
m_comboBoxCornerPos->SetSelection( 2 );
bSizer6->Add( m_comboBoxCornerPos, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
bSizerPos->Add( bSizer6, 0, wxALIGN_CENTER_VERTICAL, 5 );
bSizerMain->Add( bSizerPos, 0, 0, 5 );
m_SizerEndPosition = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizerEndXY;
bSizerEndXY = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* bSizer41;
bSizer41 = new wxBoxSizer( wxVERTICAL );
m_staticTextEndX = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("End X (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextEndX->Wrap( -1 );
bSizer41->Add( m_staticTextEndX, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlEndX = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizer41->Add( m_textCtrlEndX, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
bSizerEndXY->Add( bSizer41, 1, wxEXPAND, 5 );
wxBoxSizer* bSizer51;
bSizer51 = new wxBoxSizer( wxVERTICAL );
m_staticTextEndY = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("End Y (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextEndY->Wrap( -1 );
bSizer51->Add( m_staticTextEndY, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlEndY = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizer51->Add( m_textCtrlEndY, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
bSizerEndXY->Add( bSizer51, 1, wxEXPAND, 5 );
m_SizerEndPosition->Add( bSizerEndXY, 1, 0, 5 );
wxBoxSizer* bSizer61;
bSizer61 = new wxBoxSizer( wxVERTICAL );
m_staticTextOrgEnd = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Origin"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextOrgEnd->Wrap( -1 );
bSizer61->Add( m_staticTextOrgEnd, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_comboBoxCornerEnd = new wxComboBox( m_scrolledLeftWindow, wxID_ANY, _("Lower Right"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
m_comboBoxCornerEnd->Append( _("Upper Right") );
m_comboBoxCornerEnd->Append( _("Upper Left") );
m_comboBoxCornerEnd->Append( _("Lower Right") );
m_comboBoxCornerEnd->Append( _("Lower Left") );
m_comboBoxCornerEnd->SetSelection( 2 );
bSizer61->Add( m_comboBoxCornerEnd, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
m_SizerEndPosition->Add( bSizer61, 0, wxALIGN_CENTER_VERTICAL, 5 );
bSizerMain->Add( m_SizerEndPosition, 0, 0, 5 );
wxBoxSizer* bSizerLineThickness;
bSizerLineThickness = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizerthickness;
bSizerthickness = new wxBoxSizer( wxVERTICAL );
m_staticTextThickness = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Thickness"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextThickness->Wrap( -1 );
bSizerthickness->Add( m_staticTextThickness, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
m_textCtrlThickness = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizerthickness->Add( m_textCtrlThickness, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
bSizerLineThickness->Add( bSizerthickness, 0, wxEXPAND, 5 );
m_staticTextInfoThickness = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Set to 0 to use default"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextInfoThickness->Wrap( -1 );
bSizerLineThickness->Add( m_staticTextInfoThickness, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
bSizerMain->Add( bSizerLineThickness, 0, 0, 5 );
m_SizerRotation = new wxBoxSizer( wxVERTICAL );
m_staticline1 = new wxStaticLine( m_scrolledLeftWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
m_SizerRotation->Add( m_staticline1, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizerRotation;
bSizerRotation = new wxBoxSizer( wxHORIZONTAL );
m_staticTextRot = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Rotation"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextRot->Wrap( -1 );
bSizerRotation->Add( m_staticTextRot, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
m_textCtrlRotation = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizerRotation->Add( m_textCtrlRotation, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
m_SizerRotation->Add( bSizerRotation, 0, wxEXPAND, 5 );
bSizerMain->Add( m_SizerRotation, 0, wxEXPAND, 5 );
m_staticline4 = new wxStaticLine( m_scrolledLeftWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerMain->Add( m_staticline4, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
m_staticTextRepeatPrms = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Repeat parameters:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextRepeatPrms->Wrap( -1 );
bSizerMain->Add( m_staticTextRepeatPrms, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizer20;
bSizer20 = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizer611;
bSizer611 = new wxBoxSizer( wxVERTICAL );
m_staticTextRepeatCnt = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Repeat count"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextRepeatCnt->Wrap( -1 );
bSizer611->Add( m_staticTextRepeatCnt, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlRepeatCount = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizer611->Add( m_textCtrlRepeatCount, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
bSizer20->Add( bSizer611, 1, 0, 5 );
m_SizerTextIncrementLabel = new wxBoxSizer( wxVERTICAL );
m_staticTextInclabel = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Text Increment"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextInclabel->Wrap( -1 );
m_SizerTextIncrementLabel->Add( m_staticTextInclabel, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlTextIncrement = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_SizerTextIncrementLabel->Add( m_textCtrlTextIncrement, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
bSizer20->Add( m_SizerTextIncrementLabel, 1, wxEXPAND, 5 );
bSizerMain->Add( bSizer20, 0, 0, 5 );
wxBoxSizer* bSizerPosY1;
bSizerPosY1 = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizer411;
bSizer411 = new wxBoxSizer( wxVERTICAL );
m_staticTextStepX = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Step X (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextStepX->Wrap( -1 );
bSizer411->Add( m_staticTextStepX, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlStepX = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizer411->Add( m_textCtrlStepX, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
bSizerPosY1->Add( bSizer411, 1, wxEXPAND, 5 );
wxBoxSizer* bSizer511;
bSizer511 = new wxBoxSizer( wxVERTICAL );
m_staticTextStepY = new wxStaticText( m_scrolledLeftWindow, wxID_ANY, _("Step Y (mm)"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextStepY->Wrap( -1 );
bSizer511->Add( m_staticTextStepY, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlStepY = new wxTextCtrl( m_scrolledLeftWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizer511->Add( m_textCtrlStepY, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
bSizerPosY1->Add( bSizer511, 1, wxEXPAND, 5 );
bSizerMain->Add( bSizerPosY1, 0, 0, 5 );
m_staticline3 = new wxStaticLine( m_scrolledLeftWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerMain->Add( m_staticline3, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
m_scrolledLeftWindow->SetSizer( bSizerMain );
m_scrolledLeftWindow->Layout();
bSizerMain->Fit( m_scrolledLeftWindow );
bSizerpanel->Add( m_scrolledLeftWindow, 1, wxEXPAND | wxALL, 5 );
this->SetSizer( bSizerpanel );
this->Layout();
// Connect Events
m_buttonOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_PROPERTIES_BASE::OnAcceptPrms ), NULL, this );
}
PANEL_PROPERTIES_BASE::~PANEL_PROPERTIES_BASE()
{
// Disconnect Events
m_buttonOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_PROPERTIES_BASE::OnAcceptPrms ), NULL, this );
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,124 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Oct 8 2012)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __PROPERTIES_FRAME_BASE_H__
#define __PROPERTIES_FRAME_BASE_H__
#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/intl.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/sizer.h>
#include <wx/statline.h>
#include <wx/button.h>
#include <wx/choice.h>
#include <wx/checkbox.h>
#include <wx/combobox.h>
#include <wx/scrolwin.h>
#include <wx/panel.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class PANEL_PROPERTIES_BASE
///////////////////////////////////////////////////////////////////////////////
class PANEL_PROPERTIES_BASE : public wxPanel
{
private:
protected:
wxScrolledWindow* m_scrolledLeftWindow;
wxStaticText* m_staticTextDefVal;
wxStaticText* m_staticTextDefTsX;
wxTextCtrl* m_textCtrlDefaultTextSizeX;
wxStaticText* m_staticTextDefTsY;
wxTextCtrl* m_textCtrlDefaultTextSizeY;
wxStaticText* m_staticTextDefLineW;
wxTextCtrl* m_textCtrlDefaultLineWidth;
wxStaticText* m_staticText22;
wxTextCtrl* m_textCtrlDefaultTextThickness;
wxStaticLine* m_staticline7;
wxButton* m_buttonOK;
wxStaticLine* m_staticline8;
wxStaticText* m_staticTextType;
wxTextCtrl* m_textCtrlType;
wxStaticText* m_staticTextPageOpt;
wxChoice* m_choicePageOpt;
wxStaticLine* m_staticline5;
wxBoxSizer* m_SizerTextOptions;
wxStaticText* m_staticTextText;
wxTextCtrl* m_textCtrlText;
wxStaticText* m_staticTextHjust;
wxChoice* m_choiceHjustify;
wxCheckBox* m_checkBoxBold;
wxStaticText* m_staticTextVjust;
wxChoice* m_choiceVjustify;
wxCheckBox* m_checkBoxItalic;
wxStaticText* m_staticTexTsizeX;
wxTextCtrl* m_textCtrlTextSizeX;
wxStaticText* m_staticTextTsizeY;
wxTextCtrl* m_textCtrlTextSizeY;
wxStaticText* m_staticTextConstraints;
wxStaticText* m_staticTextConstraintX;
wxTextCtrl* m_textCtrlConstraintX;
wxStaticText* m_staticTextConstraintY;
wxTextCtrl* m_textCtrlConstraintY;
wxStaticLine* m_staticline6;
wxStaticText* m_staticTextComment;
wxTextCtrl* m_textCtrlComment;
wxStaticLine* m_staticline2;
wxStaticText* m_staticTextPosX;
wxTextCtrl* m_textCtrlPosX;
wxStaticText* m_staticTextPosY;
wxTextCtrl* m_textCtrlPosY;
wxStaticText* m_staticTextOrgPos;
wxComboBox* m_comboBoxCornerPos;
wxBoxSizer* m_SizerEndPosition;
wxStaticText* m_staticTextEndX;
wxTextCtrl* m_textCtrlEndX;
wxStaticText* m_staticTextEndY;
wxTextCtrl* m_textCtrlEndY;
wxStaticText* m_staticTextOrgEnd;
wxComboBox* m_comboBoxCornerEnd;
wxStaticText* m_staticTextThickness;
wxTextCtrl* m_textCtrlThickness;
wxStaticText* m_staticTextInfoThickness;
wxBoxSizer* m_SizerRotation;
wxStaticLine* m_staticline1;
wxStaticText* m_staticTextRot;
wxTextCtrl* m_textCtrlRotation;
wxStaticLine* m_staticline4;
wxStaticText* m_staticTextRepeatPrms;
wxStaticText* m_staticTextRepeatCnt;
wxTextCtrl* m_textCtrlRepeatCount;
wxBoxSizer* m_SizerTextIncrementLabel;
wxStaticText* m_staticTextInclabel;
wxTextCtrl* m_textCtrlTextIncrement;
wxStaticText* m_staticTextStepX;
wxTextCtrl* m_textCtrlStepX;
wxStaticText* m_staticTextStepY;
wxTextCtrl* m_textCtrlStepY;
wxStaticLine* m_staticline3;
// Virtual event handlers, overide them in your derived class
virtual void OnAcceptPrms( wxCommandEvent& event ) { event.Skip(); }
public:
PANEL_PROPERTIES_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 315,756 ), long style = wxTAB_TRAVERSAL );
~PANEL_PROPERTIES_BASE();
};
#endif //__PROPERTIES_FRAME_BASE_H__

View File

@ -0,0 +1,419 @@
/**
* @file pagelayout_editor/events_called_functions.cpp
* @brief page layout editor command event functions.
*/
#include <fctsys.h>
#include <wx/treectrl.h>
#include <appl_wxstruct.h>
#include <class_drawpanel.h>
#include <common.h>
#include <macros.h>
#include <pl_editor_frame.h>
#include <kicad_device_context.h>
#include <pl_editor_id.h>
#include <dialog_helpers.h>
#include <menus_helpers.h>
#include <worksheet_shape_builder.h>
#include <class_worksheet_dataitem.h>
#include <design_tree_frame.h>
#include <properties_frame.h>
#include <dialog_page_settings.h>
#include <invoke_pl_editor_dialog.h>
BEGIN_EVENT_TABLE( PL_EDITOR_FRAME, EDA_DRAW_FRAME )
EVT_CLOSE( PL_EDITOR_FRAME::OnCloseWindow )
// Desing tree event:
EVT_TREE_SEL_CHANGED( ID_DESIGN_TREE_FRAME, PL_EDITOR_FRAME::OnTreeSelection )
EVT_TREE_ITEM_MIDDLE_CLICK( ID_DESIGN_TREE_FRAME, PL_EDITOR_FRAME::OnTreeMiddleClick )
EVT_TREE_ITEM_RIGHT_CLICK( ID_DESIGN_TREE_FRAME, PL_EDITOR_FRAME::OnTreeRightClick )
// Menu Files:
EVT_MENU( wxID_NEW, PL_EDITOR_FRAME::Files_io )
EVT_MENU( wxID_OPEN, PL_EDITOR_FRAME::Files_io )
EVT_MENU( wxID_SAVE, PL_EDITOR_FRAME::Files_io )
EVT_MENU( wxID_SAVEAS, PL_EDITOR_FRAME::Files_io )
EVT_MENU( wxID_FILE, PL_EDITOR_FRAME::Files_io )
EVT_MENU( ID_LOAD_DEFAULT_PAGE_LAYOUT, PL_EDITOR_FRAME::Files_io )
EVT_MENU( ID_OPEN_POLYGON_DESCR_FILE, PL_EDITOR_FRAME::Files_io )
EVT_MENU( ID_GEN_PLOT, PL_EDITOR_FRAME::ToPlotter )
EVT_MENU_RANGE( wxID_FILE1, wxID_FILE9, PL_EDITOR_FRAME::OnFileHistory )
EVT_MENU( wxID_EXIT, PL_EDITOR_FRAME::OnQuit )
// menu Preferences
EVT_MENU_RANGE( ID_PREFERENCES_HOTKEY_START, ID_PREFERENCES_HOTKEY_END,
PL_EDITOR_FRAME::Process_Config )
EVT_MENU_RANGE( ID_LANGUAGE_CHOICE, ID_LANGUAGE_CHOICE_END, EDA_DRAW_FRAME::SetLanguage )
// menu Postprocess
EVT_MENU( ID_MENU_PL_EDITOR_SELECT_PREFERED_EDITOR,
EDA_BASE_FRAME::OnSelectPreferredEditor )
// Menu Help
EVT_MENU( wxID_HELP, EDA_DRAW_FRAME::GetKicadHelp )
EVT_MENU( wxID_ABOUT, EDA_DRAW_FRAME::GetKicadAbout )
EVT_TOOL( wxID_CUT, PL_EDITOR_FRAME::Process_Special_Functions )
EVT_TOOL( wxID_UNDO, PL_EDITOR_FRAME::Process_Special_Functions )
EVT_TOOL( wxID_REDO, PL_EDITOR_FRAME::Process_Special_Functions )
EVT_TOOL( wxID_PRINT, PL_EDITOR_FRAME::ToPrinter )
EVT_TOOL( wxID_PREVIEW, PL_EDITOR_FRAME::ToPrinter )
EVT_TOOL( ID_SHEET_SET, PL_EDITOR_FRAME::Process_Special_Functions )
EVT_TOOL( ID_SHOW_REAL_MODE, PL_EDITOR_FRAME::OnSelectTitleBlockDisplayMode )
EVT_TOOL( ID_SHOW_LPEDITOR_MODE, PL_EDITOR_FRAME::OnSelectTitleBlockDisplayMode )
EVT_CHOICE( ID_SELECT_COORDINATE_ORIGIN, PL_EDITOR_FRAME::OnSelectCoordOriginCorner)
EVT_CHOICE( ID_SELECT_PAGE_NUMBER, PL_EDITOR_FRAME::Process_Special_Functions)
// Vertical toolbar:
EVT_TOOL( ID_NO_TOOL_SELECTED, PL_EDITOR_FRAME::Process_Special_Functions )
EVT_MENU_RANGE( ID_POPUP_START_RANGE, ID_POPUP_END_RANGE,
PL_EDITOR_FRAME::Process_Special_Functions )
EVT_UPDATE_UI( ID_SHOW_REAL_MODE, PL_EDITOR_FRAME::OnUpdateTitleBlockDisplayNormalMode )
EVT_UPDATE_UI( ID_SHOW_LPEDITOR_MODE, PL_EDITOR_FRAME::OnUpdateTitleBlockDisplaySpecialMode )
END_EVENT_TABLE()
/* Handles the selection of tools, menu, and popup menu commands.
*/
void PL_EDITOR_FRAME::Process_Special_Functions( wxCommandEvent& event )
{
int id = event.GetId();
int idx;
wxString msg;
WORKSHEET_LAYOUT& pglayout = WORKSHEET_LAYOUT::GetTheInstance();
WORKSHEET_DATAITEM* item = NULL;
wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED );
cmd.SetEventObject( this );
switch( id )
{
case ID_NO_TOOL_SELECTED:
SetToolID( ID_NO_TOOL_SELECTED, m_canvas->GetDefaultCursor(), wxEmptyString );
break;
case ID_SELECT_PAGE_NUMBER:
m_canvas->Refresh();
break;
case ID_SHEET_SET:
{
DIALOG_PAGES_SETTINGS dlg( this );
dlg.SetWksFileName( GetCurrFileName() );
dlg.EnableWksFileNamePicker( false );
dlg.ShowModal();
cmd.SetId( ID_ZOOM_PAGE );
wxPostEvent( this, cmd );
}
break;
case ID_POPUP_CANCEL_CURRENT_COMMAND:
break;
case ID_POPUP_DESIGN_TREE_ITEM_DELETE:
case ID_POPUP_ITEM_DELETE:
case wxID_CUT:
// Delete item, and select the previous item
item = m_treePagelayout->GetPageLayoutSelectedItem();
if( item == NULL )
break;
idx = pglayout.GetItemIndex( item );
pglayout.Remove( item );
RebuildDesignTree();
if( id == ID_POPUP_DESIGN_TREE_ITEM_DELETE )
{
item = pglayout.GetItem( (unsigned) (idx-1) );
if( item )
m_treePagelayout->SelectCell( item );
}
item = NULL;
OnModify();
m_canvas->Refresh();
break;
case ID_POPUP_ITEM_ADD_LINE:
idx = m_treePagelayout->GetSelectedItemIndex();
item = AddPageLayoutItem( WORKSHEET_DATAITEM::WS_SEGMENT, idx );
if( InvokeDialogNewItem( this, item ) == wxID_CANCEL )
{
pglayout.Remove( item );
RebuildDesignTree();
item = NULL;
}
m_canvas->Refresh();
break;
case ID_POPUP_ITEM_ADD_RECT:
idx = m_treePagelayout->GetSelectedItemIndex();
item = AddPageLayoutItem( WORKSHEET_DATAITEM::WS_RECT, idx );
if( InvokeDialogNewItem( this, item ) == wxID_CANCEL )
{
pglayout.Remove( item );
RebuildDesignTree();
item = NULL;
}
m_canvas->Refresh();
break;
case ID_POPUP_ITEM_ADD_TEXT:
idx = m_treePagelayout->GetSelectedItemIndex();
item = AddPageLayoutItem( WORKSHEET_DATAITEM::WS_TEXT, idx );
if( InvokeDialogNewItem( this, item ) == wxID_CANCEL )
{
pglayout.Remove( item );
RebuildDesignTree();
item = NULL;
}
m_canvas->Refresh();
break;
case ID_POPUP_ITEM_ADD_POLY:
cmd.SetId( ID_OPEN_POLYGON_DESCR_FILE );
wxPostEvent( this, cmd );
break;
case ID_POPUP_ITEM_PLACE:
item = GetScreen()->GetCurItem();
m_canvas->SetMouseCapture( NULL, NULL );
GetScreen()->SetCurItem( NULL );
break;
case ID_POPUP_ITEM_PLACE_CANCEL:
if( m_canvas->IsMouseCaptured() )
m_canvas->EndMouseCapture();
break;
case ID_POPUP_ITEM_MOVE_START_POINT:
case ID_POPUP_ITEM_MOVE_END_POINT:
case ID_POPUP_ITEM_MOVE:
item = m_treePagelayout->GetPageLayoutSelectedItem();
MoveItem( item );
break;
default:
wxMessageBox( wxT( "PL_EDITOR_FRAME::Process_Special_Functions error" ) );
break;
}
if( item )
{
OnModify();
m_propertiesPagelayout->CopyPrmsFromItemToPanel( item );
m_treePagelayout->SelectCell( item );
}
}
DPOINT initialPosition; // The initial position of the item to move, in mm
wxPoint initialPositionUi; // The initial position of the item to move, in Ui
wxPoint initialCursorPosition; // The initial position of the cursor
static void moveItem( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, bool aErase )
{
PL_EDITOR_SCREEN* screen = (PL_EDITOR_SCREEN*) aPanel->GetScreen();
WORKSHEET_DATAITEM *item = screen->GetCurItem();
wxCHECK_RET( (item != NULL), wxT( "Cannot move NULL item." ) );
wxPoint newpos = screen->GetCrossHairPosition()
- ( initialCursorPosition - initialPositionUi );
if( (item->GetFlags() & LOCATE_STARTPOINT) )
item->MoveStartPointToUi( newpos );
else if( (item->GetFlags() & LOCATE_ENDPOINT) )
item->MoveEndPointToUi( newpos );
else
item->MoveToUi( newpos );
// Draw the item item at it's new position.
aPanel->Refresh();
}
static void abortMoveItem( EDA_DRAW_PANEL* aPanel, wxDC* aDC )
{
PL_EDITOR_SCREEN* screen = (PL_EDITOR_SCREEN*) aPanel->GetScreen();
WORKSHEET_DATAITEM *item = screen->GetCurItem();
if( (item->GetFlags() & LOCATE_STARTPOINT) )
{
item->MoveStartPointTo( initialPosition );
}
else if( (item->GetFlags() & LOCATE_ENDPOINT) )
{
item->MoveEndPointTo( initialPosition );
}
else
item->MoveTo( initialPosition );
aPanel->SetMouseCapture( NULL, NULL );
screen->SetCurItem( NULL );
aPanel->Refresh();
}
void PL_EDITOR_FRAME::MoveItem( WORKSHEET_DATAITEM* aItem )
{
wxCHECK_RET( aItem != NULL, wxT( "Cannot move NULL item" ) );
initialPosition = aItem->GetStartPos();
initialPositionUi = aItem->GetStartPosUi();
initialCursorPosition = GetScreen()->GetCrossHairPosition();
if( (aItem->GetFlags() & LOCATE_ENDPOINT) )
{
initialPosition = aItem->GetEndPos();
initialPositionUi = aItem->GetEndPosUi();
}
if( aItem->GetFlags() & (LOCATE_STARTPOINT|LOCATE_ENDPOINT) )
{
GetScreen()->SetCrossHairPosition( initialPositionUi, false );
m_canvas->MoveCursorToCrossHair();
initialCursorPosition = GetScreen()->GetCrossHairPosition();
m_canvas->Refresh();
}
m_canvas->SetMouseCapture( moveItem, abortMoveItem );
GetScreen()->SetCurItem( aItem );
}
/* called when the user select one of the 4 page corner as corner
* reference (or the left top paper corner)
*/
void PL_EDITOR_FRAME::OnSelectCoordOriginCorner( wxCommandEvent& event )
{
m_originSelectChoice = m_originSelectBox->GetSelection();
UpdateStatusBar(); // Update grid origin
m_canvas->Refresh();
}
void PL_EDITOR_FRAME::OnSelectTitleBlockDisplayMode( wxCommandEvent& event )
{
WORKSHEET_DATAITEM::m_SpecialMode = (event.GetId() == ID_SHOW_LPEDITOR_MODE);
m_canvas->Refresh();
}
void PL_EDITOR_FRAME::OnQuit( wxCommandEvent& event )
{
Close( true );
}
/**
* Function SetLanguage
* called on a language menu selection
* Update Layer manager title and tabs texts
*/
void PL_EDITOR_FRAME::SetLanguage( wxCommandEvent& event )
{
EDA_DRAW_FRAME::SetLanguage( event );
}
void PL_EDITOR_FRAME::ToPlotter(wxCommandEvent& event)
{
wxMessageBox( wxT("Not yet available"));
}
void PL_EDITOR_FRAME::ToPrinter(wxCommandEvent& event)
{
// static print data and page setup data, to remember settings during the session
static wxPrintData* s_PrintData;
static wxPageSetupDialogData* s_pageSetupData = (wxPageSetupDialogData*) NULL;
const PAGE_INFO& pageInfo = GetPageSettings();
if( s_PrintData == NULL ) // First print
{
s_PrintData = new wxPrintData();
s_PrintData->SetQuality( wxPRINT_QUALITY_HIGH ); // Default resolution = HIGH;
}
if( !s_PrintData->Ok() )
{
wxMessageBox( _( "Error Init Printer info" ) );
return;
}
if( s_pageSetupData == NULL )
s_pageSetupData = new wxPageSetupDialogData( *s_PrintData );
s_pageSetupData->SetPaperId( pageInfo.GetPaperId() );
s_pageSetupData->GetPrintData().SetOrientation( pageInfo.GetWxOrientation() );
if( pageInfo.IsCustom() )
{
if( pageInfo.IsPortrait() )
s_pageSetupData->SetPaperSize( wxSize( Mils2mm( pageInfo.GetWidthMils() ),
Mils2mm( pageInfo.GetHeightMils() ) ) );
else
s_pageSetupData->SetPaperSize( wxSize( Mils2mm( pageInfo.GetHeightMils() ),
Mils2mm( pageInfo.GetWidthMils() ) ) );
}
*s_PrintData = s_pageSetupData->GetPrintData();
if( event.GetId() == wxID_PREVIEW )
InvokeDialogPrintPreview( this, s_PrintData );
else
InvokeDialogPrint( this, s_PrintData, s_pageSetupData );
}
void PL_EDITOR_FRAME::OnTreeSelection( wxTreeEvent& event )
{
WORKSHEET_DATAITEM* item = GetSelectedItem();
if( item )
m_propertiesPagelayout->CopyPrmsFromItemToPanel( item );
m_canvas->Refresh();
}
void PL_EDITOR_FRAME::OnTreeMiddleClick( wxTreeEvent& event )
{
}
void PL_EDITOR_FRAME::OnTreeRightClick( wxTreeEvent& event )
{
m_treePagelayout->SelectCell( event.GetItem() );
wxMenu popMenu;
AddMenuItem( &popMenu, ID_POPUP_ITEM_ADD_LINE, _( "Add line" ),
KiBitmap( add_dashed_line_xpm ) );
AddMenuItem( &popMenu, ID_POPUP_ITEM_ADD_RECT, _( "Add rect" ),
KiBitmap( add_rectangle_xpm ) );
AddMenuItem( &popMenu, ID_POPUP_ITEM_ADD_TEXT, _( "Add text" ),
KiBitmap( add_text_xpm ) );
AddMenuItem( &popMenu, ID_POPUP_ITEM_ADD_POLY, _( "Import poly descr file" ),
KiBitmap( add_polygon_xpm ) );
popMenu.AppendSeparator();
AddMenuItem( &popMenu, ID_POPUP_DESIGN_TREE_ITEM_DELETE, _( "Delete" ),
KiBitmap( delete_xpm ) );
PopupMenu( &popMenu );
}
void PL_EDITOR_FRAME::OnUpdateTitleBlockDisplayNormalMode( wxUpdateUIEvent& event )
{
event.Check( WORKSHEET_DATAITEM::m_SpecialMode == false );
}
void PL_EDITOR_FRAME::OnUpdateTitleBlockDisplaySpecialMode( wxUpdateUIEvent& event )
{
event.Check( WORKSHEET_DATAITEM::m_SpecialMode == true );
}

254
pagelayout_editor/files.cpp Normal file
View File

@ -0,0 +1,254 @@
/**
* @file gerbview/files.cpp
*/
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2012 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
* Copyright (C) 2004-2012 KiCad Developers, see change_log.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
*/
#include <fctsys.h>
#include <common.h>
#include <class_drawpanel.h>
#include <confirm.h>
#include <gestfich.h>
#include <macros.h>
#include <worksheet_shape_builder.h>
#include <pl_editor_frame.h>
#include <pl_editor_id.h>
#include <wildcards_and_files_ext.h>
void PL_EDITOR_FRAME::OnFileHistory( wxCommandEvent& event )
{
wxString filename;
filename = GetFileFromHistory( event.GetId(), _( "Page Layout Description File" ) );
if( filename != wxEmptyString )
{
if( GetScreen()->IsModify() && !IsOK( this,
_( "The current page layout has been modified.\n"
"Do you wish to discard the changes?" ) ) )
return;
m_canvas->EndMouseCapture( ID_NO_TOOL_SELECTED, m_canvas->GetDefaultCursor() );
::wxSetWorkingDirectory( ::wxPathOnly( filename ) );
if( LoadPageLayoutDescrFile( filename ) )
{
wxString msg;
msg.Printf( _("File <%s> loaded"), GetChars( filename ) );
SetStatusText( msg );
}
RebuildDesignTree();
m_canvas->Refresh();
}
}
/* File commands. */
void PL_EDITOR_FRAME::Files_io( wxCommandEvent& event )
{
wxString msg;
int id = event.GetId();
wxString filename = GetCurrFileName();
WORKSHEET_LAYOUT& pglayout = WORKSHEET_LAYOUT::GetTheInstance();
if( filename.IsEmpty() && id == wxID_SAVE )
id = wxID_SAVEAS;
switch( id )
{
case ID_LOAD_DEFAULT_PAGE_LAYOUT:
case wxID_NEW:
case wxID_OPEN:
if( GetScreen()->IsModify() && !IsOK( this,
_( "The current page layout has been modified.\n"
"Do you wish to discard the changes?" ) ) )
return;
break;
default:
break;
}
switch( id )
{
case ID_LOAD_DEFAULT_PAGE_LAYOUT:
pglayout.SetPageLayout();
RebuildDesignTree();
m_canvas->Refresh();
GetScreen()->ClrModify();
break;
case wxID_NEW:
pglayout.AllowVoidList( true );
SetCurrFileName( wxEmptyString );
pglayout.ClearList();
RebuildDesignTree();
m_canvas->Refresh();
GetScreen()->ClrModify();
break;
case ID_OPEN_POLYGON_DESCR_FILE:
{
wxFileDialog openFileDialog(this, _("Open polygon descr file"),
wxEmptyString,
wxEmptyString, PageLayoutDescrFileWildcard, wxFD_OPEN);
if (openFileDialog.ShowModal() == wxID_CANCEL)
return;
filename = openFileDialog.GetPath();
if( ! InsertPageLayoutDescrFile( filename ) )
{
wxString msg;
msg.Printf( _("Unable to load %s file"), GetChars( filename ) );
wxMessageBox( msg );
}
else
{
GetScreen()->SetModify();
RebuildDesignTree();
m_canvas->Refresh();
msg.Printf( _("File <%s> inserted"), GetChars( filename ) );
SetStatusText( msg );
}
}
break;
case wxID_OPEN:
{
wxFileDialog openFileDialog(this, _("Open file"), wxEmptyString,
wxEmptyString, PageLayoutDescrFileWildcard, wxFD_OPEN);
if (openFileDialog.ShowModal() == wxID_CANCEL)
return;
filename = openFileDialog.GetPath();
if( ! LoadPageLayoutDescrFile( filename ) )
{
wxString msg;
msg.Printf( _("Unable to load %s file"), GetChars( filename ) );
wxMessageBox( msg );
}
else
{
RebuildDesignTree();
m_canvas->Refresh();
msg.Printf( _("File <%s> loaded"), GetChars( filename ) );
SetStatusText( msg );
}
}
break;
case wxID_SAVE:
if( !SavePageLayoutDescrFile( filename ) )
{
msg.Printf( _("Unable to write <%s>"), GetChars( filename ) );
wxMessageBox( msg );
}
else
{
msg.Printf( _("File <%s> written"), GetChars( filename ) );
SetStatusText( msg );
}
break;
case wxID_SAVEAS:
{
wxFileDialog openFileDialog(this, _("Create file"), wxEmptyString,
wxEmptyString, PageLayoutDescrFileWildcard, wxFD_SAVE);
if (openFileDialog.ShowModal() == wxID_CANCEL)
return;
filename = openFileDialog.GetPath();
if( !SavePageLayoutDescrFile( filename ) )
{
wxString msg;
msg.Printf( _("Unable to create <%s>"), GetChars( filename ) );
wxMessageBox( msg );
}
else
{
msg.Printf( _("File <%s> written"), GetChars( filename ) );
SetStatusText( msg );
if( GetCurrFileName().IsEmpty() )
SetCurrFileName( filename );
}
}
break;
default:
wxMessageBox( wxT( "File_io: unexpected command id" ) );
break;
}
}
/* Loads a .kicad_wks page layout descr file
*/
bool PL_EDITOR_FRAME::LoadPageLayoutDescrFile( const wxString& aFullFileName )
{
if( wxFileExists( aFullFileName ) )
{
WORKSHEET_LAYOUT::GetTheInstance().SetPageLayout( aFullFileName );
SetCurrFileName( aFullFileName );
UpdateFileHistory( aFullFileName );
GetScreen()->ClrModify();
return true;
}
return false;
}
/* Inserts a .kicad_wks page layout descr file
* same as LoadPageLayoutDescrFile, but the new data is added
* to the previous data.
*/
bool PL_EDITOR_FRAME::InsertPageLayoutDescrFile( const wxString& aFullFileName )
{
if( wxFileExists( aFullFileName ) )
{
const bool append = true;
WORKSHEET_LAYOUT::GetTheInstance().SetPageLayout( aFullFileName, append );
return true;
}
return false;
}
/* Save the current layout in a .kicad_wks page layout descr file
*/
bool PL_EDITOR_FRAME::SavePageLayoutDescrFile( const wxString& aFullFileName )
{
if( ! aFullFileName.IsEmpty() )
{
WORKSHEET_LAYOUT::GetTheInstance().Save( aFullFileName );
GetScreen()->ClrModify();
return true;
}
return false;
}

View File

@ -0,0 +1,132 @@
/**
* @file gerbview/hotkeys.cpp
*/
#include <fctsys.h>
#include <common.h>
#include <kicad_device_context.h>
#include <id.h>
#include <class_drawpanel.h>
#include <pl_editor_frame.h>
#include <hotkeys.h>
/* How to add a new hotkey:
* add a new id in the enum hotkey_id_commnand like MY_NEW_ID_FUNCTION.
* add a new EDA_HOTKEY entry like:
* static EDA_HOTKEY HkMyNewEntry(wxT("Command Label"), MY_NEW_ID_FUNCTION, default key value);
* "Command Label" is the name used in hotkey list display, and the identifier in the
* hotkey list file MY_NEW_ID_FUNCTION is an equivalent id function used in the switch
* in OnHotKey() function. default key value is the default hotkey for this command.
* Can be overrided by the user hotkey list file add the HkMyNewEntry pointer in the
* s_board_edit_Hotkey_List list ( or/and the s_module_edit_Hotkey_List list) Add the
* new code in the switch in OnHotKey() function. when the variable PopupOn is true,
* an item is currently edited. This can be usefull if the new function cannot be
* executed while an item is currently being edited
* ( For example, one cannot start a new wire when a component is moving.)
*
* Note: If an hotkey is a special key, be sure the corresponding wxWidget keycode (WXK_XXXX)
* is handled in the hotkey_name_descr s_Hotkey_Name_List list (see hotkeys_basic.cpp)
* and see this list for some ascii keys (space ...)
*/
/* local variables */
/* Hotkey list: */
static EDA_HOTKEY HkResetLocalCoord( wxT( "Reset Local Coordinates" ),
HK_RESET_LOCAL_COORD, ' ' );
static EDA_HOTKEY HkZoomAuto( wxT( "Zoom Auto" ), HK_ZOOM_AUTO, WXK_HOME );
static EDA_HOTKEY HkZoomCenter( wxT( "Zoom Center" ), HK_ZOOM_CENTER, WXK_F4 );
static EDA_HOTKEY HkZoomRedraw( wxT( "Zoom Redraw" ), HK_ZOOM_REDRAW, WXK_F3 );
static EDA_HOTKEY HkZoomOut( wxT( "Zoom Out" ), HK_ZOOM_OUT, WXK_F2 );
static EDA_HOTKEY HkZoomIn( wxT( "Zoom In" ), HK_ZOOM_IN, WXK_F1 );
static EDA_HOTKEY HkHelp( wxT( "Help (this window)" ), HK_HELP, '?' );
static EDA_HOTKEY HkSwitchUnits( wxT( "Switch Units" ), HK_SWITCH_UNITS, 'U' );
// List of common hotkey descriptors
EDA_HOTKEY* s_PlEditor_Hotkey_List[] = {
&HkHelp,
&HkZoomIn, &HkZoomOut, &HkZoomRedraw, &HkZoomCenter,
&HkZoomAuto, &HkSwitchUnits, &HkResetLocalCoord,
NULL
};
// list of sections and corresponding hotkey list for GerbView (used to create an hotkey
// config file)
struct EDA_HOTKEY_CONFIG s_PlEditor_Hokeys_Descr[] =
{
{ &g_CommonSectionTag, s_PlEditor_Hotkey_List, NULL },
{ NULL, NULL, NULL }
};
/*
* Function OnHotKey.
* ** Commands are case insensitive **
* Some commands are relatives to the item under the mouse cursor
* aDC = current device context
* aHotkeyCode = hotkey code (ascii or wxWidget code for special keys)
* aPosition The cursor position in logical (drawing) units.
* aItem = NULL or pointer on a EDA_ITEM under the mouse cursor
*/
void PL_EDITOR_FRAME::OnHotKey( wxDC* aDC, int aHotkeyCode, const wxPoint& aPosition, EDA_ITEM* aItem )
{
wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED );
cmd.SetEventObject( this );
/* Convert lower to upper case (the usual toupper function has problem with non ascii
* codes like function keys */
if( (aHotkeyCode >= 'a') && (aHotkeyCode <= 'z') )
aHotkeyCode += 'A' - 'a';
EDA_HOTKEY * HK_Descr = GetDescriptorFromHotkey( aHotkeyCode, s_PlEditor_Hotkey_List );
if( HK_Descr == NULL )
return;
switch( HK_Descr->m_Idcommand )
{
default:
case HK_NOT_FOUND:
return;
case HK_HELP: // Display Current hotkey list
DisplayHotkeyList( this, s_PlEditor_Hokeys_Descr );
break;
case HK_ZOOM_IN:
cmd.SetId( ID_POPUP_ZOOM_IN );
GetEventHandler()->ProcessEvent( cmd );
break;
case HK_ZOOM_OUT:
cmd.SetId( ID_POPUP_ZOOM_OUT );
GetEventHandler()->ProcessEvent( cmd );
break;
case HK_ZOOM_REDRAW:
cmd.SetId( ID_ZOOM_REDRAW );
GetEventHandler()->ProcessEvent( cmd );
break;
case HK_ZOOM_CENTER:
cmd.SetId( ID_POPUP_ZOOM_CENTER );
GetEventHandler()->ProcessEvent( cmd );
break;
case HK_ZOOM_AUTO:
cmd.SetId( ID_ZOOM_PAGE );
GetEventHandler()->ProcessEvent( cmd );
break;
case HK_RESET_LOCAL_COORD: /*Reset the relative coord */
GetScreen()->m_O_Curseur = GetScreen()->GetCrossHairPosition();
break;
case HK_SWITCH_UNITS:
g_UserUnit = (g_UserUnit == INCHES ) ? MILLIMETRES : INCHES;
break;
}
}

View File

@ -0,0 +1,23 @@
/**
* gerbview/hotkeys.h
*/
#ifndef GERBVIEW_KOTKEYS_H_
#define GERBVIEW_KOTKEYS_H_
#include <hotkeys_basic.h>
// List of hot keys id.
// see also enum common_hotkey_id_commnand in hotkeys_basic.h
// for shared hotkeys id
enum hotkey_id_commnand {
HK_SWITCH_UNITS = HK_COMMON_END,
HK_SWITCH_GBR_ITEMS_DISPLAY_MODE,
HK_SWITCH_LAYER_TO_NEXT,
HK_SWITCH_LAYER_TO_PREVIOUS
};
// List of hotkey descriptors for GerbView.
extern struct EDA_HOTKEY_CONFIG s_PlEditor_Hokeys_Descr[];
#endif // GERBVIEW_KOTKEYS_H_

Some files were not shown because too many files have changed in this diff Show More