From eb34364d89ad377d656282b40fff9181578113a7 Mon Sep 17 00:00:00 2001 From: Marco Serantoni Date: Fri, 7 Feb 2014 19:53:54 +0100 Subject: [PATCH 01/18] [MacOSX] Automating building for OSX with KICAD_SCRIPTING, see Documentation/compiling/mac-osx.txt --- CMakeLists.txt | 44 ++++++- CMakeModules/download_pcre.cmake | 73 +++++++++++ CMakeModules/download_swig.cmake | 77 ++++++++++++ CMakeModules/download_wxpython.cmake | 117 ++++++++++++++++++ Documentation/compiling/mac-osx.txt | 174 +++++---------------------- pcbnew/CMakeLists.txt | 35 ++++++ pcbnew/pcbnew.cpp | 17 +++ scripts/osx_fixbundle.sh | 55 ++++++++- 8 files changed, 443 insertions(+), 149 deletions(-) create mode 100644 CMakeModules/download_pcre.cmake create mode 100644 CMakeModules/download_swig.cmake create mode 100644 CMakeModules/download_wxpython.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 83f2fdfd9b..e8a47a5b13 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,9 +58,16 @@ option( KICAD_SCRIPTING_WXPYTHON ) option( KICAD_BUILD_STATIC - "Builds Kicad and all libraries static (except wx-widgets)" + "Builds Kicad and all libraries static" ) +option( KICAD_BUILD_DYNAMIC + "Builds Kicad and all libraries dynamic (required for wxPython)" + ) + + +# WARNING: KiCad developers strongly advise you to build Boost with supplied patches, +# as it is known to work with KiCad. Other versions may contain bugs that may result # WARNING: KiCad developers strongly advise you to build Boost with supplied patches, # as it is known to work with KiCad. Other versions may contain bugs that may result # in KiCad errors. @@ -334,6 +341,14 @@ add_definitions(-DWX_COMPATIBILITY) find_package( OpenGL QUIET ) check_find_package_result( OPENGL_FOUND "OpenGL" ) +add_custom_target( lib-wxpython ) + include( download_pcre ) + include( download_swig ) + include( download_wxpython ) + add_dependencies( lib-wxpython pcre ) + add_dependencies( lib-wxpython swig ) + add_dependencies( lib-wxpython libwxpython ) + if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC ) #set(CMAKE_FIND_LIBRARY_SUFFIXES ".a;.so;.dylib;.dll") @@ -348,7 +363,6 @@ if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC ) if( KICAD_BUILD_DYNAMIC ) message(STATUS "KICAD_BUILD_DYNAMIC set") - # TODO - Library packaging/relocation endif() add_custom_target( lib-dependencies @@ -357,8 +371,28 @@ if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC ) include( download_libpng ) - if( KICAD_SCRIPTING_WXPYTHON ) - message( FATAL_ERROR "KICAD_BUILD_* and SCRIPTING Not Implemented Yet!" ) + if( KICAD_SCRIPTING OR KICAD_SCRIPTING_WXPYTHON OR KICAD_SCRIPTING_MODULES ) + set( SWIG_EXECUTABLE ${SWIG_ROOT}/bin/swig ) + set( SWIG_INCLUDE ${SWIG_ROOT}/include ) + set( PYTHON_DEST ${LIBWXPYTHON_ROOT}/wxPython/lib/python2.6/site-packages ) + + if( NOT EXISTS ${SWIG_EXECUTABLE} ) + set(KICAD_SCRIPTING CACHE OFF FORCE "Disabling KICAD_SCRIPTING") + message( STATUS "KICAD_SCRIPTING Enabled but SWIG not found, please disable and before reenabling execute: make lib-wxpython") + message( FATAL_ERROR "Missing SWIG!") + endif() + message(STATUS "SWIG_EXECUTABLE: ${SWIG_EXECUTABLE}") + + set( PYTHON_EXECUTABLE /usr/bin/python2.6 ) + + set( PYTHON_DEST ${LIBWXPYTHON_ROOT}/wxPython/lib/python2.6/site-packages ) + + set(wxWidgets_BIN_DIR ${LIBWXPYTHON_ROOT}/bin/wxrc ) + set(wxWidgets_CONFIG_EXECUTABLE ${LIBWXPYTHON_ROOT}/bin/wx-config ) + set(wxWidgets_INCLUDE_DIRS ${LIBWXPYTHON_ROOT}/include/wx-3.0 ) + set(wxWidgets_LIBRARY_DIRS ${LIBWXPYTHON_ROOT}/lib ) + + add_dependencies( lib-dependencies libwxpython ) else() include( download_wxwidgets ) add_dependencies( lib-dependencies libwx ) @@ -421,7 +455,7 @@ endif() # On Apple only wxwidgets 2.9 or higher doesn't need to find aui part of base # Seems no more needed on wx-3 -if( APPLE AND NOT (KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC) ) +if( APPLE AND ( KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES OR KICAD_SCRIPTING_WXPYTHON) ) find_package( wxWidgets COMPONENTS gl adv html core net base xml QUIET ) else() find_package( wxWidgets COMPONENTS gl aui adv html core net base xml QUIET ) diff --git a/CMakeModules/download_pcre.cmake b/CMakeModules/download_pcre.cmake new file mode 100644 index 0000000000..540887a7a8 --- /dev/null +++ b/CMakeModules/download_pcre.cmake @@ -0,0 +1,73 @@ +# This program source code file is part of KICAD, a free EDA CAD application. +# +# Copyright (C) 2013 SoftPLC Corporation, Dick Hollenbeck +# 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 + +# Downloads and builds PCRE + +#--------------------------------------------------------------------- + +set( PCRE_RELEASE 8.34 ) +set( PCRE_MD5 eb34b2c9c727fd64940d6fd9a00995eb ) # re-calc this on every RELEASE change + +# The boost headers [and static libs if built] go here, at the top of KiCad +# source tree in boost_root. +set( PCRE_ROOT "${PROJECT_SOURCE_DIR}/pcre_root" ) + +#-------------------------------------------------------------------- + +find_package( BZip2 REQUIRED ) + +set( PREFIX ${DOWNLOAD_DIR}/pcre ) + +if (APPLE) + if( CMAKE_OSX_ARCHITECTURES ) + set( PCRE_CFLAGS "CFLAGS=-arch ${CMAKE_OSX_ARCHITECTURES} -mmacosx-version-min=10.5" ) + set( PCRE_CXXFLAGS "CXXFLAGS=-arch ${CMAKE_OSX_ARCHITECTURES} -mmacosx-version-min=10.5" ) + set( PCRE_LDFLAGS "LDFLAGS=-arch ${CMAKE_OSX_ARCHITECTURES} -mmacosx-version-min=10.5" ) + endif( CMAKE_OSX_ARCHITECTURES ) +endif(APPLE) + +# There is a Bazaar 'boost scratch repo' in /boost and after committing pristine +# download, the patch is applied. This lets you regenerate a new patch at any time +# easily, simply by editing the working tree in and doing "bzr diff" in there. + +ExternalProject_Add( pcre + PREFIX "${PREFIX}" + DOWNLOAD_DIR "${DOWNLOAD_DIR}" + URL http://sourceforge.net/projects/pcre/files/pcre/${PCRE_RELEASE}/pcre-${PCRE_RELEASE}.tar.gz + URL_MD5 ${PCRE_MD5} + STAMP_DIR "${PREFIX}" + + #SOURCE_DIR "${PREFIX}" + BUILD_IN_SOURCE 1 + + UPDATE_COMMAND ${CMAKE_COMMAND} -E remove_directory "${PCRE_ROOT}" + + #PATCH_COMMAND "true" + CONFIGURE_COMMAND ./configure --prefix=${PCRE_ROOT} ${PCRE_CFLAGS} ${PCRE_CXXFLAGS} ${PCRE_LDFLAGS} --disable-dependency-tracking + + #BINARY_DIR "${PREFIX}" + + BUILD_COMMAND $(MAKE) + + INSTALL_DIR "${PCRE_ROOT}" + INSTALL_COMMAND $(MAKE) install + ) diff --git a/CMakeModules/download_swig.cmake b/CMakeModules/download_swig.cmake new file mode 100644 index 0000000000..7ee8a4ebc6 --- /dev/null +++ b/CMakeModules/download_swig.cmake @@ -0,0 +1,77 @@ +# This program source code file is part of KICAD, a free EDA CAD application. +# +# Copyright (C) 2013 SoftPLC Corporation, Dick Hollenbeck +# 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 + +# Downloads and builds SWIG + +#--------------------------------------------------------------------- + +set( SWIG_RELEASE 2.0.11 ) +set( SWIG_MD5 291ba57c0acd218da0b0916c280dcbae ) # re-calc this on every RELEASE change + +# The boost headers [and static libs if built] go here, at the top of KiCad +# source tree in boost_root. +set( SWIG_ROOT "${PROJECT_SOURCE_DIR}/swig_root" ) + +#-------------------------------------------------------------------- + +find_package( BZip2 REQUIRED ) + +set( PREFIX ${DOWNLOAD_DIR}/swig ) + +if (APPLE) + if( CMAKE_OSX_ARCHITECTURES ) + set( SWIG_CFLAGS "CFLAGS=-arch ${CMAKE_OSX_ARCHITECTURES} -mmacosx-version-min=10.5" ) + set( SWIG_CXXFLAGS "CXXFLAGS=-arch ${CMAKE_OSX_ARCHITECTURES} -mmacosx-version-min=10.5" ) + set( SWIG_LDFLAGS "LDFLAGS=-arch ${CMAKE_OSX_ARCHITECTURES} -mmacosx-version-min=10.5" ) + set( SWIG_PYTHON "--with-python=/usr/bin/python2.6" ) + endif( CMAKE_OSX_ARCHITECTURES ) +endif(APPLE) + +# = ${PREFIX}/src/glew +# There is a Bazaar 'boost scratch repo' in /boost and after committing pristine +# download, the patch is applied. This lets you regenerate a new patch at any time +# easily, simply by editing the working tree in and doing "bzr diff" in there. + +ExternalProject_Add( swig + PREFIX "${PREFIX}" + DOWNLOAD_DIR "${DOWNLOAD_DIR}" + URL http://sourceforge.net/projects/swig/files/swig/swig-${SWIG_RELEASE}/swig-${SWIG_RELEASE}.tar.gz + URL_MD5 ${SWIG_MD5} + STAMP_DIR "${PREFIX}" + + DEPENDS pcre + + #SOURCE_DIR "${PREFIX}" + BUILD_IN_SOURCE 1 + + UPDATE_COMMAND ${CMAKE_COMMAND} -E remove_directory "${SWIG_ROOT}" + + #PATCH_COMMAND "true" + CONFIGURE_COMMAND ./configure --prefix=${SWIG_ROOT} --with-pcre-prefix=${PCRE_ROOT} ${SWIG_CFLAGS} ${SWIG_LDFLAGS} ${SWIG_CXXFLAGS} ${SWIG_PYTHON} + + #BINARY_DIR "${PREFIX}" + + BUILD_COMMAND $(MAKE) + + INSTALL_DIR "${SWIG_ROOT}" + INSTALL_COMMAND $(MAKE) install + ) diff --git a/CMakeModules/download_wxpython.cmake b/CMakeModules/download_wxpython.cmake new file mode 100644 index 0000000000..e9738f5830 --- /dev/null +++ b/CMakeModules/download_wxpython.cmake @@ -0,0 +1,117 @@ +# This program source code file is part of KICAD, a free EDA CAD application. +# +# Copyright (C) 2013 SoftPLC Corporation, Dick Hollenbeck +# 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 + +# Downloads and builds LIBWXPYTHON + +#--------------------------------------------------------------------- + +set( LIBWXPYTHON_RELEASE 3.0.0.0 ) +set( LIBWXPYTHON_MD5 f5e32c7d85dc261ba777e113c3b7e365 ) # re-calc this on every RELEASE change + +set( LIBWXPYTHON_ROOT "${PROJECT_SOURCE_DIR}/libwxpython_root" ) + +#-------------------------------------------------------------------- + +find_package( BZip2 REQUIRED ) + +set( PREFIX ${DOWNLOAD_DIR}/libwxpython ) +set( LIBWXPYTHON_EXEC python ) +set( LIBWXPYTHON_OPTS --wxpy_installdir=${LIBWXPYTHON_ROOT}/wxPython ) + +if (APPLE) + SET( LIBWXPYTHON_EXEC python2.6 ) + SET( LIBWXPYTHON_OPTS ${LIBWXPYTHON_OPTS} --osx_cocoa ) + #SET( LIBWXPYTHON_OPTS ${LIBWXPYTHON_OPTS} --mac_framework --mac_framework_prefix=${LIBWXPYTHON_ROOT}/wxPython ) + + if( CMAKE_OSX_ARCHITECTURES ) + STRING(REGEX REPLACE " -arch " "," LIBWXPYTHON_ARCHITECTURES ${CMAKE_OSX_ARCHITECTURES}) + SET( LIBWXPYTHON_OPTS ${LIBWXPYTHON_OPTS} --mac_arch=${LIBWXPYTHON_ARCHITECTURES}) + endif( CMAKE_OSX_ARCHITECTURES ) +endif(APPLE) + +if ( KICAD_BUILD_STATIC ) + #message fail + set( LIBWXPYTHON_BUILDTYPE "--disable-shared" ) +endif( KICAD_BUILD_STATIC ) + +# = ${PREFIX}/src/libwx +# There is a Bazaar 'boost scratch repo' in /boost and after committing pristine +# download, the patch is applied. This lets you regenerate a new patch at any time +# easily, simply by editing the working tree in and doing "bzr diff" in there. + +ExternalProject_Add( libwxpython + PREFIX "${PREFIX}" + DOWNLOAD_DIR "${DOWNLOAD_DIR}" + URL http://sourceforge.net/projects/wxpython/files/wxPython/${LIBWXPYTHON_RELEASE}/wxPython-src-${LIBWXPYTHON_RELEASE}.tar.bz2 + URL_MD5 ${LIBWXPYTHON_MD5} + STAMP_DIR "${PREFIX}" + + BUILD_IN_SOURCE 1 + + PATCH_COMMAND bzr revert + COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/wxpython-3.0.0_macosx.patch" + #COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/wxwidgets-3.0.0_macosx_bug_15908.patch" + + UPDATE_COMMAND ${CMAKE_COMMAND} -E remove_directory "${LIBWXPYTHON_ROOT}" + COMMAND ${LIBWXPYTHON_EXEC} wxPython/build-wxpython.py --clean + + CONFIGURE_COMMAND ${LIBWXPYTHON_EXEC} wxPython/build-wxpython.py --prefix=/Users/marco/Development/product/libwxpython_root --unicode --install ${LIBWXPYTHON_OPTS} + + #BINARY_DIR "${PREFIX}" + + BUILD_COMMAND true + + INSTALL_DIR "${LIBWXPYTHON_ROOT}" + INSTALL_COMMAND true + ) + +ExternalProject_Add_Step( libwxpython bzr_commit_libwxpython + COMMAND bzr ci -q -m pristine + COMMENT "committing pristine libwxpython files to 'libwxpython scratch repo'" + DEPENDERS patch + ) + + +ExternalProject_Add_Step( libwxpython bzr_add_libwxpython + COMMAND bzr add -q ${PREFIX}/src/libwxpython + COMMENT "adding pristine libwxpython files to 'libwxpython scratch repo'" + DEPENDERS bzr_commit_libwxpython + ) + + +ExternalProject_Add_Step( libwxpython bzr_init_libwxpython + COMMAND bzr init -q + COMMENT "creating 'libwxpython scratch repo' specifically for libwx to track libwx patches" + DEPENDERS bzr_add_libwxpython + DEPENDEES download + ) + +###### +# Now is time to search what we have built +###### + +ExternalProject_Add_Step( libwxpython libwxpython_recursive_message + COMMAND cmake . + COMMENT "*** RERUN CMAKE - wxWidgets built, now reissue a cmake to build Kicad" + DEPENDEES install + ) + diff --git a/Documentation/compiling/mac-osx.txt b/Documentation/compiling/mac-osx.txt index 01477eede3..ac606ff3c5 100644 --- a/Documentation/compiling/mac-osx.txt +++ b/Documentation/compiling/mac-osx.txt @@ -1,8 +1,10 @@ Compiling KiCad on Apple Mac OS X ================================= First written: 2010-01-31 -Last edited by: Jerry Jacobs + by: Jerry Jacobs + Modified at: 2014-02-07 + by: Marco Serantoni Snow Leopard ------------ @@ -11,158 +13,48 @@ Requirements * XCode Tools (http://developer.apple.com/tools/xcode) * bzr (bazaar) * CMake (http://www.cmake.org) - * wxWidgets 2.9 (http://www.wxwidgets.org/downloads) - * Doxygen (http://www.doxygen.nl) - * ccache (http://www.macports.org) + The build of Kicad for OSX is now easier than before. + The building system will download and compile the needed libraries for you + patching them accordly to the needs. -Building wxWidgets 2.9 Universal +Building Kicad with no support for Scripting ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To check if your tools and libraries are installed check with file for architectures. -user@macosx$ file /Developer/SDKs/MacOSX10.5.sdk/usr/lib/libSystem.dylib + The building needs to know if you want a static binary or a dynamic one + Just set ONE of those two options KICAD_BUILD_STATIC or KICAD_BUILD_DYNAMIC + + If you set KICAD_BUILD_DYNAMIC the building system will build all and include + the needed libraries for each executable in its bundle -/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libSystem.dylib: Mach-O universal binary with 4 architectures -/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libSystem.dylib (for architecture ppc7400): Mach-O dynamically linked shared library stub ppc -/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libSystem.dylib (for architecture ppc64)Mach-O 64-bit dynamically linked shared library stub ppc64 -/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libSystem.dylib (for architecture i386):Mach-O dynamically linked shared library stub i386 -/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libSystem.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library stub x86_64 +Building Kicad with support for Scripting +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Due some problems with some dependencies the build of this kind of binary is a bit + more complex, you should initially set KICAD_BUILD_DYNAMIC + then issue for example -You need the architectures what you are compiling for ! + cmake -DKICAD_BUILD_DYNAMIC=ON + make lib-wxpython -If you have problems that the 64bits library is not build you should add in -the configure file: + After successfully building you can set your KICAD_SCRIPTING* options (for example): -At time of writing (2009-01-16) this is on line 18381 - changing this: OSX_UNIV_OPTS="-arch ppc -arch i386" - into this: OSX_UNIV_OPTS="-arch ppc -arch i386 -arch x86_64" + cmake -DKICAD_SCRIPTING=ON -DKICAD_SCRIPTING_WXPYTHON=ON + make -Building a universal monolib wxWidgets 2.9 with the following parameters: -./configure --enable-unicode=yes --enable-shared=no --enable-monolithic --with-opengl --with-expat=builtin --enable-universal_binary --enable-aui --enable-debug --with-osx_cocoa --with-macosx-sdk=/Developer/SDKs/MacOSX10.5.sdk/ --prefix=/opt/wxwidgets/ + The system will build all accordling your choices and package all in the bundle + I know bundles will be huge, but those will be autosufficient. - Should be subsituded with the revision from SVN +Building Kicad for other processors or Universal binaries +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Then you should a message like this: + I wish remember you should set the processor like -Configured wxWidgets 2.9.2 for `i686-apple-darwin10.4.0' + cmake -DCMAKE_OSX_ARCHITECTURES="x86_64" - Which GUI toolkit should wxWidgets use? osx_cocoa - Should wxWidgets be compiled into single library? yes - Should wxWidgets be linked as a shared library? no - Should wxWidgets support Unicode? yes (using UTF-8) - What level of wxWidgets compatibility should be enabled? - wxWidgets 2.6 no - wxWidgets 2.8 yes - Which libraries should wxWidgets use? - STL no - jpeg builtin - png builtin - regex builtin - tiff builtin - zlib sys - expat builtin - libmspack no - sdl no + for other platforms + cmake -DCMAKE_OSX_ARCHITECTURES="x86_64 -arch i386" + cmake -DCMAKE_OSX_ARCHITECTURES="x86_64 -arch i386 -arch ppc" -If you don't need the debugging symbols then you can remove the --enable-debug parameter. - -Compiling and installing: -make -sudo make install - - -Move the old Mac OS X wxconfig and symlink it to the new compiled 2.9 - -sudo mv /usr/bin/wx-config /usr/bin/wx-config.osx -sudo ln -s /opt/wxwidgets-svn/bin/wx-config /usr - -Building KiCad -~~~~~~~~~~~~~~ -Extract the sources or get them from subversion. - -user@mac-osx$ cmake . - -Regarding Kicad the only things i've changed are the Variables -in the generated CMakeCache.txt - -It depends on which CMake version you use: - -//Flags used by the compiler during all build types. -//This fixes also BOOST macro errors -CMAKE_CXX_FLAGS:STRING=-D__ASSERTMACROS__ - -//Build architectures for OSX -CMAKE_OSX_ARCHITECTURES:STRING=x86_64 -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk/ -mmacosx-version-min=10.5 - -//The product will be built against the headers and libraries located -// inside the indicated SDK. -CMAKE_OSX_SYSROOT:PATH=/Developer/SDKs/MacOSX10.5.sdk - -//Minimum OS X version to target for deployment (at runtime); newer -// APIs weak linked. Set to empty string for default value. -CMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.5 - -Or: - -CMAKE_OSX_ARCHITECTURE = x86_64 -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk/ -mmacosx-version-min=10.5 -CMAKE_OSX_SYSROOT = /Developer/SDKs/MacOSX10.5.sdk -CMAKE_CXX_FLAGS = -D__ASSERTMACROS__ - - -Then we invoke make: -user@mac-osx$ make - -It is also possible to give all the options on the commandline and not to edit the CMakeCache.txt. This is a oneliner for Leopard and up: - -cmake ~/Repositories/testing -DCMAKE_OSX_ARCHITECTURES="i386 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6" -DCMAKE_CXX_FLAGS="-D__ASSERTMACROS__" -DCMAKE_OSX_SYSROOT="/Developer/SDKs/MacOSX10.6.sdk" - -Optional compiler cache -~~~~~~~~~~~~~~~~~~~~~~~ -If you (re)compile often, you would love to use cache. The best is to install it using macports and set the libexec symlink -directory of ccache in your PATH variable. - -Then start with a clean directory and invoke cmake, make sure that the C++ compiler points to /opt/local/libexec/ccache/g++ - -Further reading at http://trac.macports.org/wiki/howto/ccache - -Known Problems -~~~~~~~~~~~~~~ -In file included from -/temp/kicad-sources/boost_1_38_0/boost/ptr_container/detail/reversible_ptr_container.hpp:22In -file included from -/temp/kicad-sources/boost_1_38_0/boost/ptr_container/detail/reversible_ptr_container.hpp:22, - from -/temp/kicad-sources/boost_1_38_0/boost/ptr_container/ptr_sequence_adapter.hpp:20, - from -/temp/kicad-sources/boost_1_38_0/boost/ptr_container/ptr_vector.hpp:20, - from -/temp/kicad-sources/kicad/include/board_item_struct.h:9, - from /temp/kicad-sources/kicad/include/pcbstruct.h:10, - from /temp/kicad-sources/kicad/3d-viewer/3d_viewer.h:29, - from /temp/kicad-sources/kicad/3d-viewer/3d_aux.cpp:23: - /temp/kicad-sources/boost_1_38_0/boost/ptr_container/detail/static_move_ptr.hpp:154:50: -error: macro "check" passed 2 arguments, but takes just 1 - -CMAKE_CXX_FLAGS = -D__ASSERTMACROS__ fixes this :-) - - -configure:18585: gcc -isysroot /Developer/SDKs/MacOSX10.5.sdk/ -mmacosx-version-min=10.5 -o conftest -arch i386 -arch x86_64 -arch ppc -arch i386 -arch x86_64 -arch ppc conftest.c >&5 -ld: warning: in /Developer/SDKs/MacOSX10.5.sdk//usr/lib/libSystem.dylib, missing required architecture ppc in file - -Installing rosetta and xcode with all architectures fixes this "problem" - - -ld: warning: in /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks//QuickTime.framework/QuickTime, missing required architecture x86_64 in file - -You get this error because the QuickTime 10.6 framework is not build with 64bit support. This not a real issue for KiCad because we don't use it anyway. - -Undefined symbols: - "TestForIntersectionOfStraightLineSegments(int, int, int, int, int, int, int, int, int*, int*, double*)", referenced from: - clipLine(EDA_Rect*, int&, int&, int&, int&)in libcommon.a(gr_basic.cpp.o) - -Make sure you marked the build type Release: - -//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or -// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel. -CMAKE_BUILD_TYPE:STRING=Release + I know some you should prefer use ; as separator, this will be accomplished soon + keeping support for both the syntaxes diff --git a/pcbnew/CMakeLists.txt b/pcbnew/CMakeLists.txt index b3c424e6d6..e486d013d9 100644 --- a/pcbnew/CMakeLists.txt +++ b/pcbnew/CMakeLists.txt @@ -593,6 +593,23 @@ if( KICAD_SCRIPTING ) ) install( FILES ${CMAKE_BINARY_DIR}/pcbnew/pcbnew.py DESTINATION ${PYTHON_DEST} ) + + if( APPLE ) + # copies all into PYTHON_DEST then all into the bundle ! + add_custom_target( _pcbnew_py_copy ALL + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/pcbnew/pcbnew.py "${PYTHON_DEST}" + DEPENDS FixSwigImportsModuleScripting + COMMENT "Copying pcbnew.py into PYTHON_DEST" + ) + + add_custom_target( pcbnew_copy_wxpython_scripting ALL + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBWXPYTHON_ROOT}/wxPython ${CMAKE_SOURCE_DIR}/pcbnew/pcbnew.app/Contents/Frameworks/wxPython + DEPENDS FixSwigImportsScripting _pcbnew_py_copy + COMMENT "Copying wxPython into pcbnew.app Framework" + ) + # fix bundle after copying wxpython, fixing and copying + add_dependencies( osx_fix_bundles pcbnew_copy_wxpython_scripting ) + endif() endif() if( KICAD_SCRIPTING_MODULES ) @@ -609,6 +626,24 @@ if( KICAD_SCRIPTING_MODULES ) else() install( FILES ${CMAKE_BINARY_DIR}/pcbnew/_pcbnew.so DESTINATION ${PYTHON_DEST} ) endif() + + if( APPLE ) + # copies needed files into PYTHON_DEST then copy all into the bundle ! + add_custom_target( _pcbnew_so_copy ALL + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/pcbnew/_pcbnew.so "${PYTHON_DEST}" + DEPENDS _pcbnew FixSwigImportsModuleScripting + COMMENT "Copying _pcbnew.so into PYTHON_DEST" + ) + + add_custom_target( pcbnew_copy_wxpython_module ALL + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBWXPYTHON_ROOT}/wxPython ${CMAKE_SOURCE_DIR}/pcbnew/pcbnew.app/Contents/Frameworks/wxPython + DEPENDS FixSwigImportsModuleScripting _pcbnew_so_copy + COMMENT "Copying wxPython into pcbnew.app Frameworks" + ) + # Tell that we have to run osx_fix_bundles fix after building _pcbnew and migrating wxPython + add_dependencies( osx_fix_bundles pcbnew_copy_wxpython_module ) + add_dependencies( osx_fix_bundles _pcbnew ) + endif() endif() diff --git a/pcbnew/pcbnew.cpp b/pcbnew/pcbnew.cpp index 37e0d12057..b111a9ff49 100644 --- a/pcbnew/pcbnew.cpp +++ b/pcbnew/pcbnew.cpp @@ -42,6 +42,7 @@ #include #include #include +#include #include #include @@ -153,6 +154,22 @@ bool EDA_APP::OnInit() #else // Add this default search path: msg = wxT("/usr/local/kicad/bin/scripting/plugins"); + // OSX + // System Library first + // User Library then + // (TODO) Bundle package ? where to place ? Shared Support ? + + msg = wxT("/Library/Application Support/kicad/scripting"); + msg = wxString( wxGetenv("HOME") ) + wxT("/Library/Application Support/kicad/scripting"); + + // Get pcbnew.app/Contents directory + wxFileName bundledir( wxStandardPaths::Get().GetExecutablePath() ) ; + bundledir.RemoveLastDir(); + + // Prepend in PYTHONPATH the content of the bundle libraries ! + wxSetEnv("PYTHONPATH",((wxGetenv("PYTHONPATH") != NULL ) ? (wxString(wxGetenv("PYTHONPATH")) + ":") : wxString("")) + + bundledir.GetPath() + + "/Frameworks/wxPython/lib/python2.6/site-packages/wx-3.0-osx_cocoa" ); #endif // On linux and osx, 2 others paths are // [HOME]/.kicad_plugins/ diff --git a/scripts/osx_fixbundle.sh b/scripts/osx_fixbundle.sh index 4eb7be82f1..93ace4b6db 100755 --- a/scripts/osx_fixbundle.sh +++ b/scripts/osx_fixbundle.sh @@ -12,7 +12,6 @@ fi EXECUTABLES="`find . -name '*.app'`" - # # Copies libraries under in the bundle and relocates them in the binary # @@ -27,12 +26,62 @@ function fixbundle() { for library in $LIBRARIES; do mkdir -p ${execpath}${exec}.app/Contents/Frameworks - if [[ "$library" =~ "$2" ]]; then + if [[ "$library" =~ "$bzroot" ]]; then echo "${exec}: Migrating `basename $library` in the bundle" - cp -f $library ${execpath}${exec}.app/Contents/Frameworks + if [ ! -f ${exec}.app/Contents/Frameworks/`basename $library` ]; then + cp -f $library ${execpath}${exec}.app/Contents/Frameworks + fi install_name_tool -change $library @executable_path/../Frameworks/`basename $library` ${execpath}${exec}.app/Contents/MacOS/${exec} fi done + + # Resolve issue in python modules (.so) + cd ${execpath} + MODULES="`find ${exec}.app -name '*.so'`" + + for module in $MODULES; do + LIBRARIES="`otool -L $module | cut -d' ' -f1`" + mkdir -p ${exec}.app/Contents/Frameworks + + for library in $LIBRARIES; do + if [[ "$library" =~ "$bzroot" ]]; then + if [ ! -f ${exec}.app/Contents/Frameworks/`basename $library` ]; then + cp -f $library ${exec}.app/Contents/Frameworks + fi + install_name_tool -change $library @executable_path/../Frameworks/`basename $library` $module + fi + done + echo "${exec}: elaborated module `basename ${module}`" + done + + # Resolve issue between DYNLIBS + dynlib_migrate="1"; + dynlib_cycle="0"; + + while [ $dynlib_migrate -gt 0 ]; do + dynlib_migrate="0"; + (( dynlib_cycle += 1 )) + DYNLIBS="`find ${exec}.app -name '*.dylib'`" + + for dynlib in $DYNLIBS; do + LIBRARIES="`otool -L $dynlib | cut -d' ' -f1`" + mkdir -p ${exec}.app/Contents/Frameworks + + for library in $LIBRARIES; do + if [[ "$library" =~ "$bzroot" ]]; then + if [ ! -f ${exec}.app/Contents/Frameworks/`basename $library` ]; then + cp -f $library ${exec}.app/Contents/Frameworks + echo "copied `basename $library` into bundle" + (( dynlib_migrate += 1)) + fi + + install_name_tool -change $library @executable_path/../Frameworks/`basename $library` $dynlib + fi + done + done + echo "${exec}: bundle dynlib dependencies migration Pass $dynlib_cycle: Migrated $dynlib_migrate libraries in bundle" + done + cd - >/dev/null } From c441c287b0a80f68a53b0b1096f5833fc605beda Mon Sep 17 00:00:00 2001 From: Marco Serantoni Date: Fri, 7 Feb 2014 20:19:53 +0100 Subject: [PATCH 02/18] =?UTF-8?q?[MacOSX]=C2=A0Fixing=20minor=20issue=20fo?= =?UTF-8?q?r=20wxPython?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pcbnew/pcbnew.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pcbnew/pcbnew.cpp b/pcbnew/pcbnew.cpp index b111a9ff49..2d695c8f44 100644 --- a/pcbnew/pcbnew.cpp +++ b/pcbnew/pcbnew.cpp @@ -154,11 +154,12 @@ bool EDA_APP::OnInit() #else // Add this default search path: msg = wxT("/usr/local/kicad/bin/scripting/plugins"); + +#ifdef __WXMAC__ // OSX // System Library first // User Library then // (TODO) Bundle package ? where to place ? Shared Support ? - msg = wxT("/Library/Application Support/kicad/scripting"); msg = wxString( wxGetenv("HOME") ) + wxT("/Library/Application Support/kicad/scripting"); @@ -170,6 +171,7 @@ bool EDA_APP::OnInit() wxSetEnv("PYTHONPATH",((wxGetenv("PYTHONPATH") != NULL ) ? (wxString(wxGetenv("PYTHONPATH")) + ":") : wxString("")) + bundledir.GetPath() + "/Frameworks/wxPython/lib/python2.6/site-packages/wx-3.0-osx_cocoa" ); +#endif #endif // On linux and osx, 2 others paths are // [HOME]/.kicad_plugins/ From d6f348f41e0ccb438e0e3cf0a43be5ac1b661620 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Fri, 7 Feb 2014 20:32:08 +0100 Subject: [PATCH 03/18] Remove duplicate icon apply.svg (use ckecked_ok.svg instead which is the same icon). Add a workaround to fix a new bug in wxWidgets 3.0 ( Windows specific ) which shows icons only with a size = 16x16 in menus which have attribute wxITEM_CHECK --- bitmaps_png/CMakeLists.txt | 1 - bitmaps_png/cpp_26/apply.cpp | 84 ------- bitmaps_png/sources/apply.svg | 390 ------------------------------ eeschema/libedit_onrightclick.cpp | 6 +- eeschema/onrightclick.cpp | 16 +- gerbview/onrightclick.cpp | 2 +- include/bitmaps.h | 1 - include/menus_helpers.h | 37 ++- kicad/menubar.cpp | 4 +- pcbnew/modedit_onclick.cpp | 6 +- pcbnew/onrightclick.cpp | 16 +- 11 files changed, 59 insertions(+), 504 deletions(-) delete mode 100644 bitmaps_png/cpp_26/apply.cpp delete mode 100644 bitmaps_png/sources/apply.svg diff --git a/bitmaps_png/CMakeLists.txt b/bitmaps_png/CMakeLists.txt index 61e46e6d9a..75976e635a 100644 --- a/bitmaps_png/CMakeLists.txt +++ b/bitmaps_png/CMakeLists.txt @@ -151,7 +151,6 @@ set( BMAPS_MID annotate_down_right annotate_right_down annotate - apply auto_associe auto_delete_track auto_track_width diff --git a/bitmaps_png/cpp_26/apply.cpp b/bitmaps_png/cpp_26/apply.cpp deleted file mode 100644 index e1a10e90cf..0000000000 --- a/bitmaps_png/cpp_26/apply.cpp +++ /dev/null @@ -1,84 +0,0 @@ - -/* Do not modify this file, it was automatically generated by the - * PNG2cpp CMake script, using a *.png file as input. - */ - -#include - -static const unsigned char png[] = { - 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, - 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c, - 0xce, 0x00, 0x00, 0x04, 0x34, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x96, 0x5b, 0x4c, 0x1c, - 0x65, 0x18, 0x86, 0xdf, 0x99, 0xd9, 0x93, 0x7b, 0x5e, 0x18, 0x76, 0x61, 0x61, 0x17, 0x58, 0x76, - 0xcb, 0x61, 0x43, 0xc9, 0xd2, 0x0a, 0xb6, 0xa5, 0x07, 0x11, 0x50, 0xd3, 0x2a, 0x49, 0x63, 0x10, - 0xab, 0x89, 0x4d, 0x49, 0x6d, 0x34, 0xc6, 0x28, 0x68, 0xbc, 0x28, 0x89, 0x69, 0x8c, 0x51, 0x13, - 0x63, 0xe2, 0x8d, 0xa9, 0xc6, 0x4a, 0x4c, 0x31, 0x95, 0xa4, 0x9a, 0xda, 0xb4, 0x52, 0x82, 0x8d, - 0x12, 0xf0, 0x50, 0x5b, 0x1a, 0x52, 0x6c, 0x88, 0x4a, 0x09, 0xb4, 0x85, 0x5a, 0xc2, 0xc2, 0xec, - 0x61, 0x4e, 0xbb, 0x3b, 0xf3, 0x7b, 0xb1, 0xb4, 0x91, 0x0a, 0x05, 0x2b, 0xed, 0x95, 0x5f, 0xf2, - 0x5e, 0x4d, 0xbe, 0x3c, 0xc9, 0x37, 0xff, 0xff, 0x7c, 0x3f, 0x45, 0x08, 0xc1, 0xbd, 0x28, 0x1a, - 0xf7, 0xa8, 0x56, 0x1d, 0x44, 0x35, 0x51, 0x4c, 0xfd, 0xc7, 0xf5, 0x3d, 0xa1, 0x77, 0x43, 0x7b, - 0xef, 0x2a, 0xc8, 0x14, 0x34, 0x8d, 0xd6, 0x95, 0xd4, 0x35, 0x64, 0x16, 0x64, 0x7e, 0xc4, 0xb4, - 0x31, 0x2f, 0xdf, 0x15, 0x90, 0xfd, 0x80, 0x7d, 0x64, 0x5b, 0x60, 0x5b, 0x41, 0x30, 0x18, 0x44, - 0x73, 0x71, 0x33, 0x65, 0x72, 0x9b, 0xde, 0xa7, 0xda, 0xa8, 0x3d, 0x00, 0x40, 0xad, 0xd6, 0x61, - 0x60, 0x0f, 0xb0, 0xe7, 0x43, 0x05, 0xa1, 0x50, 0xcb, 0xd6, 0x16, 0x50, 0x7a, 0x0a, 0x00, 0x30, - 0x39, 0x36, 0x89, 0xf6, 0x81, 0x76, 0xe2, 0x53, 0x7c, 0x7b, 0x56, 0x05, 0xe4, 0x7a, 0xc3, 0x35, - 0x10, 0x2c, 0x28, 0xdb, 0xb4, 0xeb, 0xfe, 0x5d, 0xa0, 0x75, 0xcc, 0x82, 0x6f, 0xe3, 0x63, 0xe3, - 0xe8, 0x1a, 0xee, 0xba, 0xba, 0x60, 0x74, 0xee, 0xfd, 0xee, 0x87, 0x9b, 0x3a, 0x9a, 0x86, 0xdc, - 0xaf, 0xba, 0xd7, 0xad, 0x14, 0x92, 0xdd, 0x9e, 0xdd, 0x53, 0xe6, 0x2d, 0xd9, 0xd4, 0x18, 0x7c, - 0x1c, 0x92, 0x22, 0x82, 0xe7, 0xe3, 0x88, 0xc7, 0xd2, 0xe1, 0x66, 0x39, 0x74, 0xff, 0xd1, 0x8d, - 0x39, 0x6e, 0x6e, 0xe2, 0x26, 0xc8, 0xfc, 0xa2, 0xf9, 0x21, 0xab, 0xdd, 0x7a, 0x72, 0x47, 0xf9, - 0xa3, 0x15, 0x36, 0xa7, 0xed, 0xc7, 0x8c, 0xd6, 0x8c, 0xf2, 0xe5, 0x20, 0x79, 0xfb, 0xf3, 0xbe, - 0x5c, 0xe3, 0xf5, 0x37, 0x3c, 0x52, 0xdc, 0x80, 0x04, 0x24, 0x08, 0x22, 0x3f, 0x9f, 0x34, 0xe8, - 0xf3, 0x81, 0x4e, 0x0c, 0x5e, 0x1a, 0x1c, 0x9b, 0x7e, 0x6b, 0xba, 0x86, 0x06, 0x00, 0xe3, 0x5e, - 0xe3, 0x03, 0xd6, 0x2c, 0xeb, 0xa9, 0x86, 0xc0, 0x16, 0xe6, 0x6a, 0x62, 0x02, 0x5b, 0xfd, 0x55, - 0x3a, 0x57, 0x86, 0xeb, 0x17, 0x7b, 0xab, 0xdd, 0xb7, 0x14, 0xc4, 0xf3, 0x9a, 0xe7, 0x70, 0x20, - 0xdf, 0xb7, 0xb3, 0x3e, 0xb0, 0x19, 0x09, 0x48, 0x10, 0x65, 0x3e, 0x1d, 0x89, 0x47, 0x42, 0x92, - 0xd1, 0x73, 0xa1, 0x1b, 0x17, 0xae, 0x0c, 0x4f, 0x92, 0x0f, 0xc8, 0x1a, 0x00, 0xa0, 0xf5, 0xfb, - 0xf4, 0xe5, 0x59, 0xee, 0xac, 0xbe, 0x1d, 0xc5, 0x0f, 0x6a, 0x2c, 0x56, 0x33, 0x78, 0x39, 0x0a, - 0x17, 0xeb, 0x44, 0x4d, 0x71, 0x85, 0xc1, 0x6d, 0x76, 0x0f, 0xb3, 0xcf, 0xb3, 0xb9, 0xb7, 0x42, - 0xbc, 0xaf, 0x78, 0x0f, 0x16, 0xe5, 0x79, 0x9f, 0xd9, 0x58, 0x54, 0x01, 0x99, 0x96, 0x21, 0x25, - 0x78, 0x48, 0xf3, 0x10, 0x35, 0x95, 0xc4, 0xb9, 0x4b, 0x67, 0x70, 0x76, 0x6c, 0x70, 0x3a, 0x15, - 0x4d, 0xf9, 0x09, 0x21, 0x0a, 0x00, 0xd0, 0x1e, 0xbb, 0xe7, 0xed, 0x9a, 0xc2, 0x0a, 0x9d, 0xc5, - 0x6a, 0x85, 0x94, 0xe0, 0x21, 0xa7, 0x78, 0x88, 0xc9, 0x18, 0x58, 0xa7, 0x03, 0x55, 0x25, 0x01, - 0x23, 0x6b, 0x63, 0x47, 0xac, 0x3b, 0xad, 0x99, 0x37, 0xc7, 0xf5, 0x52, 0xde, 0x7b, 0x5e, 0x57, - 0xce, 0xbe, 0xea, 0x60, 0x29, 0x92, 0x74, 0x12, 0x72, 0x2a, 0xdd, 0x23, 0x25, 0x05, 0xd0, 0x44, - 0xc1, 0xd8, 0xe4, 0xef, 0xf8, 0xee, 0xe2, 0x0f, 0x9c, 0x18, 0x13, 0xfd, 0xa4, 0x83, 0x48, 0x37, - 0xfa, 0x34, 0x5c, 0x84, 0xeb, 0xbf, 0x38, 0x35, 0xba, 0xdd, 0x6c, 0xd4, 0x40, 0x63, 0x34, 0x82, - 0x26, 0x00, 0xad, 0xa1, 0x40, 0xa5, 0x00, 0xd6, 0xed, 0xc0, 0xfa, 0x84, 0xcf, 0x72, 0x46, 0x54, - 0x46, 0xb3, 0x1a, 0xb3, 0xbc, 0xba, 0x6c, 0x5d, 0x9b, 0xd7, 0x9d, 0xd3, 0x5a, 0x5d, 0x59, 0x84, - 0x04, 0x23, 0x43, 0x55, 0x64, 0x10, 0x85, 0x80, 0x28, 0xc0, 0x7d, 0xb4, 0x11, 0x5c, 0x24, 0x8c, - 0x93, 0xe7, 0xbf, 0x8f, 0xc7, 0xa3, 0x71, 0x3f, 0xf9, 0x8c, 0xc4, 0x16, 0x18, 0x83, 0x10, 0x02, - 0xf3, 0x6e, 0xf3, 0x27, 0x85, 0xf9, 0xd9, 0x2d, 0x1b, 0x2b, 0x4a, 0x01, 0xbd, 0x16, 0xb4, 0x86, - 0x02, 0xcd, 0x00, 0x14, 0x43, 0x41, 0xa7, 0xa1, 0x31, 0x39, 0x32, 0x83, 0x73, 0x43, 0x13, 0x51, - 0x87, 0xc5, 0x6c, 0xd9, 0x5c, 0x5b, 0x48, 0xa5, 0xf4, 0x1a, 0x10, 0x15, 0x20, 0x0a, 0x81, 0xaa, - 0x10, 0x18, 0x28, 0x13, 0x74, 0xa2, 0x1e, 0x87, 0xbe, 0x3d, 0x26, 0x0a, 0x82, 0x50, 0x2c, 0x7c, - 0x2a, 0x5c, 0xf9, 0x87, 0x9a, 0x6e, 0xdc, 0x23, 0xdb, 0xb3, 0xb6, 0x2f, 0xfc, 0xbe, 0x9c, 0x27, - 0x2b, 0x2b, 0x3d, 0x50, 0x35, 0x0c, 0x18, 0x6d, 0x1a, 0x44, 0x31, 0x80, 0x8e, 0xa6, 0x71, 0xfd, - 0xd7, 0x18, 0x9c, 0x05, 0x06, 0xa4, 0x4c, 0x0c, 0xa0, 0x52, 0xb0, 0x68, 0x1c, 0x50, 0x12, 0x0a, - 0x64, 0x31, 0x01, 0x43, 0xc2, 0x88, 0xce, 0xde, 0x5e, 0x99, 0x93, 0x22, 0x15, 0xd2, 0x21, 0xe9, - 0xb7, 0x45, 0x1d, 0xf8, 0xf7, 0x0b, 0x6b, 0xdb, 0x6d, 0x3b, 0x51, 0x56, 0xe4, 0xde, 0xbe, 0x76, - 0x7d, 0x0e, 0x92, 0xda, 0x14, 0x28, 0x06, 0xa0, 0x18, 0x15, 0x34, 0x43, 0x43, 0x4b, 0xd1, 0x50, - 0x54, 0x02, 0x55, 0x55, 0x21, 0xcb, 0x12, 0xae, 0xcd, 0x5d, 0x86, 0x20, 0x0a, 0x60, 0xe5, 0x5c, - 0x9c, 0x3d, 0x1f, 0x49, 0x46, 0xe4, 0x58, 0x55, 0xbc, 0x23, 0x3e, 0xb4, 0xa4, 0x6c, 0x6f, 0x35, - 0x83, 0xe3, 0x69, 0x47, 0x5f, 0x59, 0xc0, 0xb5, 0x85, 0x5d, 0x1b, 0x85, 0xa0, 0xe5, 0x41, 0x6b, - 0xe7, 0xff, 0x59, 0xda, 0x2a, 0x20, 0x2a, 0xa0, 0x24, 0x09, 0x94, 0x24, 0xe0, 0x8c, 0xe6, 0x62, - 0xa0, 0x2f, 0x92, 0x9a, 0xe1, 0x67, 0x6b, 0xc5, 0x23, 0x62, 0xff, 0x6d, 0xad, 0xbe, 0x98, 0x82, - 0x1c, 0xcd, 0x8e, 0xc1, 0x50, 0xa9, 0xab, 0x32, 0xab, 0x26, 0x06, 0x5e, 0x2b, 0xa4, 0xc7, 0x48, - 0x03, 0x20, 0x80, 0xaa, 0xa4, 0x41, 0xce, 0xb0, 0x07, 0xa7, 0x4f, 0xcc, 0xaa, 0xe1, 0x18, 0xf7, - 0x18, 0x7f, 0x94, 0xff, 0x66, 0xd9, 0xf5, 0xb1, 0x94, 0xeb, 0xec, 0x4f, 0xd8, 0x47, 0x36, 0xac, - 0x73, 0x97, 0xb0, 0x75, 0x51, 0x88, 0x3a, 0x01, 0x34, 0x03, 0x10, 0x00, 0x6a, 0x0a, 0x70, 0xfe, - 0x99, 0x87, 0x53, 0x9d, 0x61, 0x72, 0x3d, 0x3e, 0xf7, 0x94, 0x70, 0x4c, 0xe8, 0xfa, 0x4f, 0x8b, - 0x8f, 0x3b, 0xca, 0x95, 0xfe, 0xf4, 0xf3, 0xd4, 0x78, 0xbc, 0xdf, 0x0e, 0xbb, 0xd1, 0x08, 0xad, - 0x89, 0x86, 0xce, 0x44, 0xc3, 0x13, 0xf7, 0xa0, 0xf7, 0x70, 0x98, 0x4c, 0xc7, 0xb8, 0x17, 0x56, - 0x0a, 0x59, 0x76, 0x1f, 0x45, 0x8e, 0x47, 0xfc, 0xa7, 0x7b, 0x2f, 0x5f, 0x13, 0x7a, 0x33, 0x60, - 0x37, 0x1a, 0xe1, 0xe1, 0x3c, 0xe8, 0xfe, 0x30, 0x4c, 0xa6, 0xa2, 0x73, 0xaf, 0xf3, 0x5f, 0xf3, - 0x07, 0xff, 0x95, 0xe2, 0x09, 0x21, 0xb7, 0x0d, 0x82, 0xd0, 0x99, 0x6b, 0xcd, 0x33, 0x6d, 0x47, - 0x36, 0x90, 0xea, 0xe7, 0x7c, 0xc4, 0xd0, 0x60, 0x78, 0x73, 0xb9, 0x9e, 0xc5, 0xb2, 0xa2, 0x7d, - 0x44, 0x35, 0x52, 0x96, 0x7c, 0x2d, 0x7b, 0x5c, 0x50, 0x93, 0x3d, 0xd3, 0x5f, 0x71, 0xef, 0xdc, - 0xd1, 0x5b, 0xe2, 0xff, 0xe7, 0xd6, 0x9d, 0xd6, 0x5f, 0x63, 0x4d, 0x14, 0x46, 0x86, 0xf4, 0x75, - 0x7d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, -}; - -const BITMAP_OPAQUE apply_xpm[1] = {{ png, sizeof( png ), "apply_xpm" }}; - -//EOF diff --git a/bitmaps_png/sources/apply.svg b/bitmaps_png/sources/apply.svg deleted file mode 100644 index f522fb4faa..0000000000 --- a/bitmaps_png/sources/apply.svg +++ /dev/null @@ -1,390 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/eeschema/libedit_onrightclick.cpp b/eeschema/libedit_onrightclick.cpp index d9d247ed5a..47eade4997 100644 --- a/eeschema/libedit_onrightclick.cpp +++ b/eeschema/libedit_onrightclick.cpp @@ -6,7 +6,7 @@ /* * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 2004-2013 KiCad Developers, see change_log.txt for contributors. + * Copyright (C) 2004-2014 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 @@ -216,7 +216,7 @@ bool LIB_EDIT_FRAME::OnRightClick( const wxPoint& aPosition, wxMenu* PopMenu ) if( item->IsNew() ) { AddMenuItem( PopMenu, ID_POPUP_LIBEDIT_END_CREATE_ITEM, _( "Line End" ), - KiBitmap( apply_xpm ) ); + KiBitmap( checked_ok_xpm ) ); } msg = AddHotkeyName( _( "Edit Line Options" ), s_Libedit_Hokeys_Descr, HK_EDIT ); @@ -328,7 +328,7 @@ void AddMenusForBlock( wxMenu* PopMenu, LIB_EDIT_FRAME* frame ) PopMenu->AppendSeparator(); - AddMenuItem( PopMenu, ID_POPUP_PLACE_BLOCK, _( "Place Block" ), KiBitmap( apply_xpm ) ); + AddMenuItem( PopMenu, ID_POPUP_PLACE_BLOCK, _( "Place Block" ), KiBitmap( checked_ok_xpm ) ); if( frame->GetScreen()->m_BlockLocate.GetCommand() == BLOCK_MOVE ) { diff --git a/eeschema/onrightclick.cpp b/eeschema/onrightclick.cpp index c6f9661197..9e10448382 100644 --- a/eeschema/onrightclick.cpp +++ b/eeschema/onrightclick.cpp @@ -1,9 +1,9 @@ /* * 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) 2008-2013 Wayne Stambaugh - * Copyright (C) 2004-2013 KiCad Developers, see change_log.txt for contributors. + * Copyright (C) 2014 Jean-Pierre Charras, jp.charras at wanadoo.fr + * Copyright (C) 2008-2014 Wayne Stambaugh + * Copyright (C) 2004-2014 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 @@ -270,7 +270,7 @@ bool SCH_EDIT_FRAME::OnRightClick( const wxPoint& aPosition, wxMenu* PopMenu ) default: if( is_new ) AddMenuItem( PopMenu, ID_POPUP_END_LINE, _( "End Drawing" ), - KiBitmap( apply_xpm ) ); + KiBitmap( checked_ok_xpm ) ); AddMenuItem( PopMenu, ID_POPUP_SCH_DELETE, _( "Delete Drawing" ), KiBitmap( delete_xpm ) ); @@ -677,7 +677,7 @@ void AddMenusForWire( wxMenu* PopMenu, SCH_LINE* Wire, SCH_EDIT_FRAME* frame ) if( is_new ) { msg = AddHotkeyName( _( "Wire End" ), s_Schematic_Hokeys_Descr, HK_END_CURR_LINEWIREBUS ); - AddMenuItem( PopMenu, ID_POPUP_END_LINE, msg, KiBitmap( apply_xpm ) ); + AddMenuItem( PopMenu, ID_POPUP_END_LINE, msg, KiBitmap( checked_ok_xpm ) ); return; } @@ -727,7 +727,7 @@ void AddMenusForBus( wxMenu* PopMenu, SCH_LINE* Bus, SCH_EDIT_FRAME* frame ) if( is_new ) { msg = AddHotkeyName( _( "Bus End" ), s_Schematic_Hokeys_Descr, HK_END_CURR_LINEWIREBUS ); - AddMenuItem( PopMenu, ID_POPUP_END_LINE, msg, KiBitmap( apply_xpm ) ); + AddMenuItem( PopMenu, ID_POPUP_END_LINE, msg, KiBitmap( checked_ok_xpm ) ); return; } @@ -768,7 +768,7 @@ void AddMenusForHierchicalSheet( wxMenu* PopMenu, SCH_SHEET* Sheet ) if( Sheet->GetFlags() ) { - AddMenuItem( PopMenu, ID_POPUP_SCH_END_SHEET, _( "Place Sheet" ), KiBitmap( apply_xpm ) ); + AddMenuItem( PopMenu, ID_POPUP_SCH_END_SHEET, _( "Place Sheet" ), KiBitmap( checked_ok_xpm ) ); } else { @@ -823,7 +823,7 @@ void AddMenusForBlock( wxMenu* PopMenu, SCH_EDIT_FRAME* frame ) if( frame->GetScreen()->m_BlockLocate.GetCommand() == BLOCK_MOVE ) AddMenuItem( PopMenu, ID_POPUP_ZOOM_BLOCK, _( "Window Zoom" ), KiBitmap( zoom_area_xpm ) ); - AddMenuItem( PopMenu, ID_POPUP_PLACE_BLOCK, _( "Place Block" ), KiBitmap( apply_xpm ) ); + AddMenuItem( PopMenu, ID_POPUP_PLACE_BLOCK, _( "Place Block" ), KiBitmap( checked_ok_xpm ) ); // After a block move (that is also a block selection) one can reselect // a block function. diff --git a/gerbview/onrightclick.cpp b/gerbview/onrightclick.cpp index 798b968ba7..aefc0e006b 100644 --- a/gerbview/onrightclick.cpp +++ b/gerbview/onrightclick.cpp @@ -53,7 +53,7 @@ bool GERBVIEW_FRAME::OnRightClick( const wxPoint& aPosition, wxMenu* PopMenu ) _( "Cancel Block" ), KiBitmap( cancel_xpm ) ); PopMenu->AppendSeparator(); AddMenuItem( PopMenu, ID_POPUP_PLACE_BLOCK, - _( "Place Block" ), KiBitmap( apply_xpm ) ); + _( "Place Block" ), KiBitmap( checked_ok_xpm ) ); AddMenuItem( PopMenu, ID_POPUP_DELETE_BLOCK, _( "Delete Block (ctrl + drag mouse)" ), KiBitmap( delete_xpm ) ); } diff --git a/include/bitmaps.h b/include/bitmaps.h index 8714a297d7..eecf111f30 100644 --- a/include/bitmaps.h +++ b/include/bitmaps.h @@ -78,7 +78,6 @@ EXTERN_BITMAP( anchor_xpm ) EXTERN_BITMAP( annotate_down_right_xpm ) EXTERN_BITMAP( annotate_right_down_xpm ) EXTERN_BITMAP( annotate_xpm ) -EXTERN_BITMAP( apply_xpm ) EXTERN_BITMAP( auto_associe_xpm ) EXTERN_BITMAP( auto_delete_track_xpm ) EXTERN_BITMAP( auto_track_width_xpm ) diff --git a/include/menus_helpers.h b/include/menus_helpers.h index e808cd688b..9b0d3511d1 100644 --- a/include/menus_helpers.h +++ b/include/menus_helpers.h @@ -3,6 +3,29 @@ * @brief Usefull macros and inline functions to create menus items * in menubars or popup menus */ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2004-2014 KiCad Developers. + * + * 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 @@ -13,7 +36,7 @@ * @param aImage is the image to add the menu item. */ #if defined( USE_IMAGES_IN_MENUS ) && defined( __WINDOWS__ ) -# define SETBITMAPS( aImage ) item->SetBitmaps( KiBitmap( apply_xpm ), KiBitmap( aImage ) ) +# define SETBITMAPS( aImage ) item->SetBitmaps( KiBitmap( checked_ok_xpm ), KiBitmap( aImage ) ) #else # define SETBITMAPS( aImage ) #endif @@ -55,7 +78,11 @@ static inline wxMenuItem* AddMenuItem( wxMenu* aMenu, if( aType == wxITEM_CHECK ) { #if defined( USE_IMAGES_IN_MENUS ) && defined( __WINDOWS__ ) - item->SetBitmaps( KiBitmap( apply_xpm ), aImage ); + item->SetBitmaps( KiBitmap( checked_ok_xpm ), aImage ); + // A workaround to a strange bug on Windows, wx Widgets 3.0: + // size of bitmaps is not taken in account for wxITEM_CHECK menu + // unless we call SetFont + item->SetFont(*wxNORMAL_FONT); #endif } else @@ -96,7 +123,11 @@ static inline wxMenuItem* AddMenuItem( wxMenu* aMenu, if( aType == wxITEM_CHECK ) { #if defined( USE_IMAGES_IN_MENUS ) && defined( __WINDOWS__ ) - item->SetBitmaps( KiBitmap( apply_xpm ), aImage ); + item->SetBitmaps( KiBitmap( checked_ok_xpm ), aImage ); + // A workaround to a strange bug on Windows, wx Widgets 3.0: + // size of bitmaps is not taken in account for wxITEM_CHECK menu + // unless we call SetFont + item->SetFont(*wxNORMAL_FONT); #endif } else diff --git a/kicad/menubar.cpp b/kicad/menubar.cpp index 77283b6a53..674c972d41 100644 --- a/kicad/menubar.cpp +++ b/kicad/menubar.cpp @@ -230,7 +230,7 @@ void KICAD_MANAGER_FRAME::ReCreateMenuBar() AddMenuItem( SubMenuPdfBrowserChoice, ID_SELECT_PREFERED_PDF_BROWSER, _( "&Favourite" ), _( "Use your favourite PDF viewer used to browse datasheets" ), - KiBitmap( preference_xpm ), + KiBitmap( datasheet_xpm ), wxITEM_CHECK ); SubMenuPdfBrowserChoice->Check( ID_SELECT_PREFERED_PDF_BROWSER, !wxGetApp().UseSystemPdfBrowser() ); @@ -239,7 +239,7 @@ void KICAD_MANAGER_FRAME::ReCreateMenuBar() // Append PDF Viewer submenu to preferences AddMenuItem( SubMenuPdfBrowserChoice, ID_SELECT_PREFERED_PDF_BROWSER_NAME, - _( "&PDF Viewer" ), + _( "Select &PDF Viewer" ), _( "Select your favourite PDF viewer used to browse datasheets" ), KiBitmap( datasheet_xpm ) ); diff --git a/pcbnew/modedit_onclick.cpp b/pcbnew/modedit_onclick.cpp index 3590df63f2..e4ff4eb701 100644 --- a/pcbnew/modedit_onclick.cpp +++ b/pcbnew/modedit_onclick.cpp @@ -223,7 +223,7 @@ bool FOOTPRINT_EDIT_FRAME::OnRightClick( const wxPoint& MousePos, wxMenu* PopMen KiBitmap( zoom_area_xpm ) ); PopMenu->AppendSeparator(); AddMenuItem( PopMenu, ID_POPUP_PLACE_BLOCK, - _( "Place Block" ), KiBitmap( apply_xpm ) ); + _( "Place Block" ), KiBitmap( checked_ok_xpm ) ); AddMenuItem( PopMenu, ID_POPUP_COPY_BLOCK, _( "Copy Block (shift + drag mouse)" ), KiBitmap( copyblock_xpm ) ); @@ -327,7 +327,7 @@ bool FOOTPRINT_EDIT_FRAME::OnRightClick( const wxPoint& MousePos, wxMenu* PopMen { if( (flags & IS_NEW) ) AddMenuItem( PopMenu, ID_POPUP_PCB_STOP_CURRENT_DRAWING, _( "End edge" ), - KiBitmap( apply_xpm ) ); + KiBitmap( checked_ok_xpm ) ); if( !flags ) { @@ -337,7 +337,7 @@ bool FOOTPRINT_EDIT_FRAME::OnRightClick( const wxPoint& MousePos, wxMenu* PopMen if( ( flags & (IS_NEW | IS_MOVED) ) == IS_MOVED ) AddMenuItem( PopMenu, ID_POPUP_PCB_PLACE_EDGE, _( "Place edge" ), - KiBitmap( apply_xpm ) ); + KiBitmap( checked_ok_xpm ) ); msg = AddHotkeyName( _("Edit" ), g_Module_Editor_Hokeys_Descr, HK_EDIT_ITEM ); AddMenuItem( PopMenu, ID_POPUP_MODEDIT_EDIT_BODY_ITEM, diff --git a/pcbnew/onrightclick.cpp b/pcbnew/onrightclick.cpp index 37d53b3795..e0a156f66f 100644 --- a/pcbnew/onrightclick.cpp +++ b/pcbnew/onrightclick.cpp @@ -195,7 +195,7 @@ bool PCB_EDIT_FRAME::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu ) if( (flags & IS_NEW) ) { AddMenuItem( aPopMenu, ID_POPUP_PCB_STOP_CURRENT_DRAWING, - _( "End Drawing" ), KiBitmap( apply_xpm ) ); + _( "End Drawing" ), KiBitmap( checked_ok_xpm ) ); } if( !flags ) @@ -225,7 +225,7 @@ bool PCB_EDIT_FRAME::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu ) if( flags & IS_NEW ) { AddMenuItem( aPopMenu, ID_POPUP_PCB_STOP_CURRENT_EDGE_ZONE, - _( "Close Zone Outline" ), KiBitmap( apply_xpm ) ); + _( "Close Zone Outline" ), KiBitmap( checked_ok_xpm ) ); AddMenuItem( aPopMenu, ID_POPUP_PCB_DELETE_ZONE_LAST_CREATED_CORNER, _( "Delete Last Corner" ), KiBitmap( delete_xpm ) ); } @@ -452,7 +452,7 @@ void PCB_EDIT_FRAME::createPopUpBlockMenu( wxMenu* menu ) KiBitmap( cancel_xpm ) ); AddMenuItem( menu, ID_POPUP_ZOOM_BLOCK, _( "Zoom Block" ), KiBitmap( zoom_area_xpm ) ); menu->AppendSeparator(); - AddMenuItem( menu, ID_POPUP_PLACE_BLOCK, _( "Place Block" ), KiBitmap( apply_xpm ) ); + AddMenuItem( menu, ID_POPUP_PLACE_BLOCK, _( "Place Block" ), KiBitmap( checked_ok_xpm ) ); AddMenuItem( menu, ID_POPUP_COPY_BLOCK, _( "Copy Block" ), KiBitmap( copyblock_xpm ) ); AddMenuItem( menu, ID_POPUP_FLIP_BLOCK, _( "Flip Block" ), KiBitmap( invert_module_xpm ) ); AddMenuItem( menu, ID_POPUP_ROTATE_BLOCK, _( "Rotate Block" ), KiBitmap( rotate_ccw_xpm ) ); @@ -517,7 +517,7 @@ void PCB_EDIT_FRAME::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu ) else if( flags & IS_DRAGGED ) // Drag via or node in progress { AddMenuItem( PopMenu, ID_POPUP_PCB_PLACE_MOVED_TRACK_NODE, - _( "Place Node" ), KiBitmap( apply_xpm ) ); + _( "Place Node" ), KiBitmap( checked_ok_xpm ) ); return; } else // Edition in progress @@ -525,7 +525,7 @@ void PCB_EDIT_FRAME::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu ) if( flags & IS_NEW ) { msg = AddHotkeyName( _( "End Track" ), g_Board_Editor_Hokeys_Descr, HK_END_TRACK ); - AddMenuItem( PopMenu, ID_POPUP_PCB_END_TRACK, msg, KiBitmap( apply_xpm ) ); + AddMenuItem( PopMenu, ID_POPUP_PCB_END_TRACK, msg, KiBitmap( checked_ok_xpm ) ); } msg = AddHotkeyName( _( "Place Through Via" ), g_Board_Editor_Hokeys_Descr, HK_ADD_THROUGH_VIA ); @@ -646,16 +646,16 @@ void PCB_EDIT_FRAME::createPopUpMenuForZones( ZONE_CONTAINER* edge_zone, wxMenu* if( edge_zone->GetFlags() == IS_DRAGGED ) { AddMenuItem( aPopMenu, ID_POPUP_PCB_PLACE_DRAGGED_ZONE_OUTLINE_SEGMENT, - _( "Place Edge Outline" ), KiBitmap( apply_xpm ) ); + _( "Place Edge Outline" ), KiBitmap( checked_ok_xpm ) ); } else if( edge_zone->GetFlags() ) { if( (edge_zone->GetFlags() & IN_EDIT ) ) AddMenuItem( aPopMenu, ID_POPUP_PCB_PLACE_ZONE_CORNER, - _( "Place Corner" ), KiBitmap( apply_xpm ) ); + _( "Place Corner" ), KiBitmap( checked_ok_xpm ) ); else AddMenuItem( aPopMenu, ID_POPUP_PCB_PLACE_ZONE_OUTLINES, - _( "Place Zone" ), KiBitmap( apply_xpm ) ); + _( "Place Zone" ), KiBitmap( checked_ok_xpm ) ); } else { From bbff6c0d30b9c8978fd6aa78607882521ecdc441 Mon Sep 17 00:00:00 2001 From: Marco Serantoni Date: Fri, 7 Feb 2014 23:00:19 +0100 Subject: [PATCH 04/18] [MacOSX] Adding patches for wxPython && http://trac.wxwidgets.org/ticket/15957 --- CMakeModules/download_wxpython.cmake | 2 +- patches/wxpython-3.0.0_macosx.patch | 289 ++++++++++++++++++ patches/wxpython-3.0.0_macosx_multiarch.patch | 25 ++ 3 files changed, 315 insertions(+), 1 deletion(-) create mode 100644 patches/wxpython-3.0.0_macosx.patch create mode 100644 patches/wxpython-3.0.0_macosx_multiarch.patch diff --git a/CMakeModules/download_wxpython.cmake b/CMakeModules/download_wxpython.cmake index e9738f5830..60225b40f4 100644 --- a/CMakeModules/download_wxpython.cmake +++ b/CMakeModules/download_wxpython.cmake @@ -69,7 +69,7 @@ ExternalProject_Add( libwxpython PATCH_COMMAND bzr revert COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/wxpython-3.0.0_macosx.patch" - #COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/wxwidgets-3.0.0_macosx_bug_15908.patch" + COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/wxpython-3.0.0_macosx_multiarch.patch" # http://trac.wxwidgets.org/ticket/15957 UPDATE_COMMAND ${CMAKE_COMMAND} -E remove_directory "${LIBWXPYTHON_ROOT}" COMMAND ${LIBWXPYTHON_EXEC} wxPython/build-wxpython.py --clean diff --git a/patches/wxpython-3.0.0_macosx.patch b/patches/wxpython-3.0.0_macosx.patch new file mode 100644 index 0000000000..746943f5b4 --- /dev/null +++ b/patches/wxpython-3.0.0_macosx.patch @@ -0,0 +1,289 @@ +=== modified file 'Makefile.in' +--- Makefile.in 2014-02-05 21:57:29 +0000 ++++ Makefile.in 2014-02-05 22:00:01 +0000 +@@ -14601,7 +14601,7 @@ + monodll_carbon_frame.o \ + monodll_carbon_mdi.o \ + monodll_carbon_metafile.o \ +- monodll_carbon_overlay.o \ ++ monodll_osx_cocoa_overlay.o \ + monodll_carbon_popupwin.o \ + monodll_carbon_renderer.o \ + monodll_carbon_settings.o \ +@@ -14748,7 +14748,7 @@ + monolib_carbon_frame.o \ + monolib_carbon_mdi.o \ + monolib_carbon_metafile.o \ +- monolib_carbon_overlay.o \ ++ monolib_osx_cocoa_overlay.o \ + monolib_carbon_popupwin.o \ + monolib_carbon_renderer.o \ + monolib_carbon_settings.o \ +@@ -14895,7 +14895,7 @@ + coredll_carbon_frame.o \ + coredll_carbon_mdi.o \ + coredll_carbon_metafile.o \ +- coredll_carbon_overlay.o \ ++ coredll_osx_cocoa_overlay.o \ + coredll_carbon_popupwin.o \ + coredll_carbon_renderer.o \ + coredll_carbon_settings.o \ +@@ -15027,7 +15027,7 @@ + corelib_carbon_frame.o \ + corelib_carbon_mdi.o \ + corelib_carbon_metafile.o \ +- corelib_carbon_overlay.o \ ++ corelib_osx_cocoa_overlay.o \ + corelib_carbon_popupwin.o \ + corelib_carbon_renderer.o \ + corelib_carbon_settings.o \ +@@ -17774,6 +17774,9 @@ + monodll_osx_cocoa_notebook.o: $(srcdir)/src/osx/cocoa/notebook.mm $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/notebook.mm + ++monodll_osx_cocoa_overla.o: $(srcdir)/src/osx/cocoa/overlay.mm $(MONODLL_ODEP) ++ $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/overlay.mm ++ + monodll_osx_cocoa_radiobut.o: $(srcdir)/src/osx/cocoa/radiobut.mm $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/radiobut.mm + +@@ -21683,8 +21686,8 @@ + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@monodll_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(MONODLL_ODEP) + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp + +-@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monodll_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(MONODLL_ODEP) +-@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp ++@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monodll_osx_cocoa_overlay.o: $(srcdir)/src/osx/cocoa/overlay.mm $(MONODLL_ODEP) ++@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/cocoa/overlay.mm + + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@monodll_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(MONODLL_ODEP) + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp +@@ -23642,6 +23645,9 @@ + monolib_osx_cocoa_notebook.o: $(srcdir)/src/osx/cocoa/notebook.mm $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/notebook.mm + ++monolib_osx_cocoa_overlay.o: $(srcdir)/src/osx/cocoa/overlay.mm $(MONOLIB_ODEP) ++ $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/overlay.mm ++ + monolib_osx_cocoa_radiobut.o: $(srcdir)/src/osx/cocoa/radiobut.mm $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/radiobut.mm + +@@ -33584,8 +33590,8 @@ + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@coredll_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(COREDLL_ODEP) + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp + +-@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@coredll_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(COREDLL_ODEP) +-@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp ++@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@coredll_osx_cocoa_overlay.o: $(srcdir)/src/osx/cocoa/overlay.mm $(COREDLL_ODEP) ++@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/cocoa/overlay.mm + + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@coredll_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(COREDLL_ODEP) + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp +@@ -37961,8 +37967,8 @@ + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@corelib_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(CORELIB_ODEP) + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp + +-@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@corelib_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(CORELIB_ODEP) +-@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp ++@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@corelib_osx_cocoa_overlay.o: $(srcdir)/src/osx/cocoa/overlay.mm $(CORELIB_ODEP) ++@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/cocoa/overlay.mm + + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@corelib_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(CORELIB_ODEP) + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp + +=== modified file 'include/wx/overlay.h' +--- include/wx/overlay.h 2014-02-05 21:57:29 +0000 ++++ include/wx/overlay.h 2014-02-05 21:57:47 +0000 +@@ -13,7 +13,7 @@ + + #include "wx/defs.h" + +-#if defined(__WXMAC__) && wxOSX_USE_CARBON ++#if defined(__WXMAC__) && wxOSX_USE_COCOA_OR_CARBON + #define wxHAS_NATIVE_OVERLAY 1 + #elif defined(__WXDFB__) + #define wxHAS_NATIVE_OVERLAY 1 + +=== modified file 'include/wx/private/overlay.h' +--- include/wx/private/overlay.h 2014-02-05 21:57:29 +0000 ++++ include/wx/private/overlay.h 2014-02-05 21:57:47 +0000 +@@ -16,7 +16,11 @@ + #ifdef wxHAS_NATIVE_OVERLAY + + #if defined(__WXMAC__) ++#if wxOSX_USE_CARBON + #include "wx/osx/carbon/private/overlay.h" ++#else ++ #include "wx/osx/cocoa/private/overlay.h" ++#endif + #elif defined(__WXDFB__) + #include "wx/dfb/private/overlay.h" + #else + +=== modified file 'src/osx/cocoa/overlay.mm' +--- src/osx/cocoa/overlay.mm 2014-02-05 21:57:29 +0000 ++++ src/osx/cocoa/overlay.mm 2014-02-05 21:57:47 +0000 +@@ -34,6 +34,7 @@ + #include "wx/private/overlay.h" + + #ifdef wxHAS_NATIVE_OVERLAY ++#import + + // ============================================================================ + // implementation +@@ -58,48 +59,6 @@ + + void wxOverlayImpl::CreateOverlayWindow() + { +- if ( m_window ) +- { +- m_overlayParentWindow = m_window->MacGetTopLevelWindowRef(); +- [m_overlayParentWindow makeKeyAndOrderFront:nil]; +- +- NSView* view = m_window->GetHandle(); +- +- NSPoint viewOriginBase, viewOriginScreen; +- viewOriginBase = [view convertPoint:NSMakePoint(0, 0) toView:nil]; +- viewOriginScreen = [m_overlayParentWindow convertBaseToScreen:viewOriginBase]; +- +- NSSize viewSize = [view frame].size; +- if ( [view isFlipped] ) +- viewOriginScreen.y -= viewSize.height; +- +- m_overlayWindow=[[NSWindow alloc] initWithContentRect:NSMakeRect(viewOriginScreen.x,viewOriginScreen.y, +- viewSize.width, +- viewSize.height) +- styleMask:NSBorderlessWindowMask +- backing:NSBackingStoreBuffered +- defer:YES]; +- +- [m_overlayParentWindow addChildWindow:m_overlayWindow ordered:NSWindowAbove]; +- } +- else +- { +- m_overlayParentWindow = NULL ; +- CGRect cgbounds ; +- cgbounds = CGDisplayBounds(CGMainDisplayID()); +- +- m_overlayWindow=[[NSWindow alloc] initWithContentRect:NSMakeRect(cgbounds.origin.x,cgbounds.origin.y, +- cgbounds.size.width, +- cgbounds.size.height) +- styleMask:NSBorderlessWindowMask +- backing:NSBackingStoreBuffered +- defer:YES]; +- } +- [m_overlayWindow setOpaque:NO]; +- [m_overlayWindow setIgnoresMouseEvents:YES]; +- [m_overlayWindow setAlphaValue:1.0]; +- +- [m_overlayWindow orderFront:nil]; + } + + void wxOverlayImpl::Init( wxDC* dc, int x , int y , int width , int height ) +@@ -107,84 +66,50 @@ + wxASSERT_MSG( !IsOk() , _("You cannot Init an overlay twice") ); + + m_window = dc->GetWindow(); +- m_x = x ; +- m_y = y ; +- if ( dc->IsKindOf( CLASSINFO( wxClientDC ) )) +- { +- wxPoint origin = m_window->GetClientAreaOrigin(); +- m_x += origin.x; +- m_y += origin.y; +- } +- m_width = width ; +- m_height = height ; +- +- CreateOverlayWindow(); +- wxASSERT_MSG( m_overlayWindow != NULL , _("Couldn't create the overlay window") ); +- m_overlayContext = (CGContextRef) [[m_overlayWindow graphicsContext] graphicsPort]; +- wxASSERT_MSG( m_overlayContext != NULL , _("Couldn't init the context on the overlay window") ); +- +- int ySize = 0; +- if ( m_window ) +- { +- NSView* view = m_window->GetHandle(); +- NSSize viewSize = [view frame].size; +- ySize = viewSize.height; +- } +- else +- { +- CGRect cgbounds ; +- cgbounds = CGDisplayBounds(CGMainDisplayID()); +- ySize = cgbounds.size.height; +- +- +- +- } +- CGContextTranslateCTM( m_overlayContext, 0, ySize ); +- CGContextScaleCTM( m_overlayContext, 1, -1 ); +- CGContextTranslateCTM( m_overlayContext, -m_x , -m_y ); ++ m_overlayWindow = m_window->MacGetTopLevelWindowRef(); ++ ++ NSRect box = [m_overlayWindow frame]; ++ ++ if( [m_overlayWindow isVisible] ) ++ { ++ [m_overlayWindow discardCachedImage]; ++ [m_overlayWindow cacheImageInRect:box]; ++ } + } + + void wxOverlayImpl::BeginDrawing( wxDC* dc) + { +- wxDCImpl *impl = dc->GetImpl(); +- wxGCDCImpl *win_impl = wxDynamicCast(impl,wxGCDCImpl); +- if (win_impl) +- { +- win_impl->SetGraphicsContext( wxGraphicsContext::CreateFromNative( m_overlayContext ) ); +- dc->SetClippingRegion( m_x , m_y , m_width , m_height ) ; +- } ++ + } + + void wxOverlayImpl::EndDrawing( wxDC* dc) + { +- wxDCImpl *impl = dc->GetImpl(); +- wxGCDCImpl *win_impl = wxDynamicCast(impl,wxGCDCImpl); +- if (win_impl) +- win_impl->SetGraphicsContext(NULL); +- +- CGContextFlush( m_overlayContext ); + } + + void wxOverlayImpl::Clear(wxDC* WXUNUSED(dc)) + { + wxASSERT_MSG( IsOk() , _("You cannot Clear an overlay that is not inited") ); +- CGRect box = CGRectMake( m_x - 1, m_y - 1 , m_width + 2 , m_height + 2 ); +- CGContextClearRect( m_overlayContext, box ); ++ if( [m_overlayWindow isVisible] ) ++ { ++ [m_overlayWindow restoreCachedImage]; ++// [m_overlayWindow flushWindow]; ++ } + } + + void wxOverlayImpl::Reset() + { +- if ( m_overlayContext ) ++ if ( m_overlayContext) + { + m_overlayContext = NULL ; + } + + // todo : don't dispose, only hide and reposition on next run +- if (m_overlayWindow) ++ if (m_overlayWindow && [m_overlayWindow isVisible]) + { +- [m_overlayParentWindow removeChildWindow:m_overlayWindow]; +- [m_overlayWindow release]; +- m_overlayWindow = NULL ; ++ NSRect box = [m_overlayWindow frame]; ++ ++ [m_overlayWindow discardCachedImage]; ++ [m_overlayWindow cacheImageInRect:box]; + } + } + + diff --git a/patches/wxpython-3.0.0_macosx_multiarch.patch b/patches/wxpython-3.0.0_macosx_multiarch.patch new file mode 100644 index 0000000000..e8270251b7 --- /dev/null +++ b/patches/wxpython-3.0.0_macosx_multiarch.patch @@ -0,0 +1,25 @@ +=== modified file 'wxPython/config.py' +--- wxPython/config.py 2014-02-07 20:23:11 +0000 ++++ wxPython/config.py 2014-02-07 21:00:18 +0000 +@@ -22,6 +22,7 @@ + + import sys, os, glob, fnmatch, tempfile + import subprocess ++import re + + EGGing = 'bdist_egg' in sys.argv or 'egg_info' in sys.argv + if not EGGing: +@@ -1059,10 +1060,8 @@ + libs = ['stdc++'] + NO_SCRIPTS = 1 + if ARCH != "": +- cflags.append("-arch") +- cflags.append(ARCH) +- lflags.append("-arch") +- lflags.append(ARCH) ++ cflags.append('-arch ' + re.sub(',',' -arch ',ARCH)) ++ lflags.append('-arch ' + re.sub(',',' -arch ',ARCH)) + + if not os.environ.get('CC') or not os.environ.get('CXX'): + os.environ["CXX"] = getWxConfigValue('--cxx') + From a2483d48f36938436500f1721340aa0162ecf723 Mon Sep 17 00:00:00 2001 From: Marco Serantoni Date: Sat, 8 Feb 2014 00:40:11 +0100 Subject: [PATCH 05/18] [MacOSX] Fixing qa, thanks Miguel Angel for the feedback --- CMakeLists.txt | 13 ++++++++++--- qa/CMakeLists.txt | 6 +++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e8a47a5b13..25e58e036a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -383,8 +383,6 @@ if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC ) endif() message(STATUS "SWIG_EXECUTABLE: ${SWIG_EXECUTABLE}") - set( PYTHON_EXECUTABLE /usr/bin/python2.6 ) - set( PYTHON_DEST ${LIBWXPYTHON_ROOT}/wxPython/lib/python2.6/site-packages ) set(wxWidgets_BIN_DIR ${LIBWXPYTHON_ROOT}/bin/wxrc ) @@ -504,7 +502,16 @@ set( INC_AFTER # Find Python and other scripting resources if( KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES ) - set( PythonInterp_FIND_VERSION ) + + if( NOT APPLE ) + set( PythonInterp_FIND_VERSION ) + else() + set( PYTHON_LIBRARY /System/Library/Frameworks/Python.framework/Versions/2.6/Python ) + set( PYTHON_INCLUDE_DIR /System/Library/Frameworks/Python.framework/Versions//2.6/include/python2.6 ) + set( PythonInterp_FIND_VERSION 2.6 ) + set( PythonLibs_FIND_VERSION 2.6 ) + endif() + find_package( PythonInterp ) check_find_package_result( PYTHONINTERP_FOUND "Python Interpreter" ) diff --git a/qa/CMakeLists.txt b/qa/CMakeLists.txt index 783987f585..796575d288 100644 --- a/qa/CMakeLists.txt +++ b/qa/CMakeLists.txt @@ -1,8 +1,12 @@ if( KICAD_SCRIPTING_MODULES ) + if( APPLE AND ( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC ) ) + set( PYTHON_QA_PATH :${LIBWXPYTHON_ROOT}/wxPython/lib/python2.6/site-packages ) + endif() + # build target that runs the QA tests through scripting add_custom_target( qa - COMMAND PYTHONPATH=${CMAKE_BINARY_DIR}/pcbnew ${PYTHON_EXECUTABLE} test.py + COMMAND PYTHONPATH=${CMAKE_BINARY_DIR}/pcbnew${PYTHON_QA_PATH} ${PYTHON_EXECUTABLE} test.py COMMENT "running qa" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} From 8df3326df13232617eafbbd60b5799e23c05cd36 Mon Sep 17 00:00:00 2001 From: Miguel Angel Ajo Date: Sat, 8 Feb 2014 01:02:29 +0100 Subject: [PATCH 06/18] More BOARD unit tests --- qa/testcases/test_002_board_class.py | 69 +++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 11 deletions(-) diff --git a/qa/testcases/test_002_board_class.py b/qa/testcases/test_002_board_class.py index 230214ea6f..c9897e97f2 100644 --- a/qa/testcases/test_002_board_class.py +++ b/qa/testcases/test_002_board_class.py @@ -3,29 +3,76 @@ import unittest import pcbnew import pdb -from pcbnew import ToMM +from pcbnew import * class TestBoardClass(unittest.TestCase): def setUp(self): - self.pcb = pcbnew.LoadBoard("data/complex_hierarchy.kicad_pcb") - + self.pcb = LoadBoard("data/complex_hierarchy.kicad_pcb") + def test_pcb_find_module(self): module = self.pcb.FindModule('P1') self.assertEqual(module.GetReference(),'P1') + def test_pcb_get_track_count(self): + pcb = BOARD() + + self.assertEqual(pcb.GetNumSegmTrack(),0) + + track0 = TRACK(pcb) + pcb.Add(track0) + self.assertEqual(pcb.GetNumSegmTrack(),1) + + track1 = TRACK(pcb) + pcb.Add(track1) + self.assertEqual(pcb.GetNumSegmTrack(),2) + def test_pcb_bounding_box(self): - bounding_box = self.pcb.ComputeBoundingBox() + pcb = BOARD() + track = TRACK(pcb) + pcb.Add(track) + + #track.SetStartEnd(wxPointMM(10.0, 10.0), + # wxPointMM(20.0, 30.0)) - height = ToMM( bounding_box.GetHeight() ) - width = ToMM( bounding_box.GetWidth() ) + track.SetStart(wxPointMM(10.0, 10.0)) + track.SetEnd(wxPointMM(20.0, 30.0)) - # probably it's a cleaner test to generate a board with - # a couple of things, that we can know the exact size, - # and then compute the bounding box, + track.SetWidth(FromMM(0.5)) - self.assertAlmostEqual(height, 89.52, 2) - self.assertAlmostEqual(width, 108.44, 2) + #!!! THIS FAILS? == 0.0 x 0.0 ?? + #height, width = ToMM(pcb.ComputeBoundingBox().GetSize()) + bounding_box = pcb.ComputeBoundingBox() + height, width = ToMM(bounding_box.GetSize()) + + self.assertAlmostEqual(width, (30-10) + 0.5, 2) + self.assertAlmostEqual(height, (20-10) + 0.5, 2) + + def test_pcb_get_pad(self): + pcb = BOARD() + module = MODULE(pcb) + pcb.Add(module) + pad = D_PAD(module) + module.Add(pad) + + pad.SetShape(PAD_OVAL) + pad.SetSize(wxSizeMM(2.0, 3.0)) + pad.SetPosition(wxPointMM(0,0)) + + # easy case + p1 = pcb.GetPad(wxPointMM(0,0)) + + # top side + p2 = pcb.GetPad(wxPointMM(0.9,0.0)) + + # bottom side + p3 = pcb.GetPad(wxPointMM(0,1.4)) + + # TODO: get pad == p1 evaluated as true instead + # of relying in the internal C++ object pointer + self.assertEqual(pad.this, p1.this) + self.assertEqual(pad.this, p2.this) + self.assertEqual(pad.this, p3.this) #def test_interactive(self): # code.interact(local=locals()) From 6a9771f24b5a0bfb572906dd4965dd09fd91014f Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Sat, 8 Feb 2014 08:42:41 +0100 Subject: [PATCH 07/18] main CMakeLists: build lib-wxpython only if KICAD_SCRIPTING_WXPYTHON is ON --- CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 25e58e036a..b653827b17 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -341,6 +341,7 @@ add_definitions(-DWX_COMPATIBILITY) find_package( OpenGL QUIET ) check_find_package_result( OPENGL_FOUND "OpenGL" ) +if( KICAD_SCRIPTING_WXPYTHON ) add_custom_target( lib-wxpython ) include( download_pcre ) include( download_swig ) @@ -348,6 +349,7 @@ add_custom_target( lib-wxpython ) add_dependencies( lib-wxpython pcre ) add_dependencies( lib-wxpython swig ) add_dependencies( lib-wxpython libwxpython ) +endif() if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC ) @@ -387,7 +389,7 @@ if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC ) set(wxWidgets_BIN_DIR ${LIBWXPYTHON_ROOT}/bin/wxrc ) set(wxWidgets_CONFIG_EXECUTABLE ${LIBWXPYTHON_ROOT}/bin/wx-config ) - set(wxWidgets_INCLUDE_DIRS ${LIBWXPYTHON_ROOT}/include/wx-3.0 ) + set(wxWidgets_INCLUDE_DIRS ${LIBWXPYTHON_ROOT}/include/wx-3.0 ) set(wxWidgets_LIBRARY_DIRS ${LIBWXPYTHON_ROOT}/lib ) add_dependencies( lib-dependencies libwxpython ) @@ -503,7 +505,7 @@ set( INC_AFTER # Find Python and other scripting resources if( KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES ) - if( NOT APPLE ) + if( NOT APPLE ) set( PythonInterp_FIND_VERSION ) else() set( PYTHON_LIBRARY /System/Library/Frameworks/Python.framework/Versions/2.6/Python ) From fff54d759e5a231c003dbe052ee2d2cc3a5326b2 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Sat, 8 Feb 2014 11:44:55 +0100 Subject: [PATCH 08/18] Add the environment variable KYSYS3DMOD to define a default path for 3D models. --- 3d-viewer/3d_read_mesh.cpp | 36 ++++++++++++++++- 3d-viewer/3d_struct.h | 8 ++++ 3d-viewer/3d_viewer.h | 3 ++ common/edaappl.cpp | 66 ++++++++++++++++++++++++++++++++ cvpcb/cvpcb.cpp | 4 ++ include/appl_wxstruct.h | 20 ++++++++++ pcbnew/exporters/export_vrml.cpp | 3 +- pcbnew/pcbnew.cpp | 10 +++-- 8 files changed, 143 insertions(+), 7 deletions(-) diff --git a/3d-viewer/3d_read_mesh.cpp b/3d-viewer/3d_read_mesh.cpp index 24046f9e9c..1863b339b2 100644 --- a/3d-viewer/3d_read_mesh.cpp +++ b/3d-viewer/3d_read_mesh.cpp @@ -59,6 +59,39 @@ S3D_MODEL_PARSER* S3D_MODEL_PARSER::Create( S3D_MASTER* aMaster, } } +const wxString S3D_MASTER::GetShape3DFullFilename() +{ + + wxString shapeName; + + // Expand any environment variables embedded in footprint's m_Shape3DName field. + // To ensure compatibility with most of footprint's m_Shape3DName field, + // if the m_Shape3DName is not an absolute path the default path + // given by the environment variable KISYS3DMOD will be used + + if( m_Shape3DName.StartsWith( wxT("${") ) ) + shapeName = wxExpandEnvVars( m_Shape3DName ); + else + shapeName = m_Shape3DName; + + wxFileName fn( shapeName ); + + if( fn.IsAbsolute() || shapeName.StartsWith( wxT(".") ) ) + return shapeName; + + wxString default_path; + wxGetEnv( wxT( KISYS3DMOD ), &default_path ); + + if( default_path.IsEmpty() ) + return shapeName; + + if( !default_path.EndsWith( wxT("/") ) && !default_path.EndsWith( wxT("\\") ) ) + default_path += wxT("/"); + + default_path += shapeName; + + return default_path; +} int S3D_MASTER::ReadData() { @@ -67,8 +100,7 @@ int S3D_MASTER::ReadData() return 1; } - // Expand any environment variables embedded in footprint's m_Shape3DName field. - wxString filename = wxExpandEnvVars( m_Shape3DName ); + wxString filename = GetShape3DFullFilename(); #ifdef __WINDOWS__ filename.Replace( wxT( "/" ), wxT( "\\" ) ); diff --git a/3d-viewer/3d_struct.h b/3d-viewer/3d_struct.h index ebbe54e874..d53327f7e9 100644 --- a/3d-viewer/3d_struct.h +++ b/3d-viewer/3d_struct.h @@ -144,6 +144,14 @@ public: return m_Shape3DName; } + /** + * Function GetShape3DFullFilename + * @return the full filename of the 3D shape, + * expanding environment variable (if any ) and/or adding default 3D path + * given by environment variable KISYS3DMOD + */ + const wxString GetShape3DFullFilename(); + void SetShape3DName( const wxString& aShapeName ); }; diff --git a/3d-viewer/3d_viewer.h b/3d-viewer/3d_viewer.h index 24d76d6aa7..dc94f933ef 100644 --- a/3d-viewer/3d_viewer.h +++ b/3d-viewer/3d_viewer.h @@ -48,6 +48,9 @@ # include #endif + +#define KISYS3DMOD "KISYS3DMOD" + #include <3d_struct.h> class EDA_3D_CANVAS; diff --git a/common/edaappl.cpp b/common/edaappl.cpp index d01535c76c..c3595b0f8b 100644 --- a/common/edaappl.cpp +++ b/common/edaappl.cpp @@ -1196,3 +1196,69 @@ bool EDA_APP::SetFootprintLibTablePath() return false; } +/** + * Function Set3DShapesPath + * attempts set the environment variable given by aKiSys3Dmod to a valid path. + * (typically "KISYS3DMOD" ) + * If the environment variable is already set, + * then it left as is to respect the wishes of the user. + * + * The path is determined by attempting to find the path modules/packages3d + * files in kicad tree. + * This may or may not be the best path but it provides the best solution for + * backwards compatibility with the previous 3D shapes search path implementation. + * + * @note This must be called after #SetBinDir() is called at least on Windows. + * Otherwise, the kicad path is not known (Windows specific) + * + * @param aKiSys3Dmod = the value of environment variable, typically "KISYS3DMOD" + * @return false if the aKiSys3Dmod path is not valid. + */ +bool EDA_APP::Set3DShapesPath( const wxString& aKiSys3Dmod ) +{ + wxString path; + + // Set the KISYS3DMOD environment variable for the current process, + // if it is not already defined in the user's environment and valid. + if( wxGetEnv( aKiSys3Dmod, &path ) && wxFileName::DirExists( path ) ) + return true; + + // Attempt to determine where the 3D shape libraries were installed using the + // legacy path: + // on Unix: /usr/local/kicad/share/modules/packages3d + // or /usr/share/kicad/modules/packages3d + // On Windows: bin../share/modules/packages3d + wxString relpath( wxT( "modules/packages3d" ) ); + +// Apple MacOSx +#ifdef __APPLE__ + // TO DO + +#elif defined(__UNIX__) // Linux and non-Apple Unix + path = wxT("/usr/local/kicad/share/") + relpath; + if( wxFileName::DirExists( path ) ) + { + wxSetEnv( aKiSys3Dmod, path ); + return true; + } + + path = wxT("/usr/share/kicad/") + relpath; + if( wxFileName::DirExists( path ) ) + { + wxSetEnv( aKiSys3Dmod, path ); + return true; + } + +#else // Windows + path = m_BinDir + wxT("../share/") + relpath; + + if( wxFileName::DirExists( path ) ) + { + wxSetEnv( aKiSys3Dmod, path ); + return true; + } +#endif + + return false; +} + diff --git a/cvpcb/cvpcb.cpp b/cvpcb/cvpcb.cpp index 84a1ae8b73..b2f307fb32 100644 --- a/cvpcb/cvpcb.cpp +++ b/cvpcb/cvpcb.cpp @@ -33,6 +33,7 @@ #include #include +#include <3d_viewer.h> #include #include #include @@ -102,6 +103,9 @@ bool EDA_APP::OnInit() SetFootprintLibTablePath(); + // Set 3D shape path from environment variable KISYS3DMOD + Set3DShapesPath( wxT(KISYS3DMOD) ); + if( m_Checker && m_Checker->IsAnotherRunning() ) { if( !IsOK( NULL, _( "CvPcb is already running, Continue?" ) ) ) diff --git a/include/appl_wxstruct.h b/include/appl_wxstruct.h index a4305a4d28..afb2b91ed8 100644 --- a/include/appl_wxstruct.h +++ b/include/appl_wxstruct.h @@ -456,6 +456,26 @@ public: */ bool SetFootprintLibTablePath(); + /** + * Function Set3DShapesPath + * attempts set the environment variable given by aKiSys3Dmod to a valid path. + * (typically "KISYS3DMOD" ) + * If the environment variable is already set, + * then it left as is to respect the wishes of the user. + * + * The path is determined by attempting to find the path modules/packages3d + * files in kicad tree. + * This may or may not be the best path but it provides the best solution for + * backwards compatibility with the previous 3D shapes search path implementation. + * + * @note This must be called after #SetBinDir() is called at least on Windows. + * Otherwise, the kicad path is not known (Windows specific) + * + * @param aKiSys3Dmod = the value of environment variable, typically "KISYS3DMOD" + * @return false if the aKiSys3Dmod path is not valid. + */ + bool Set3DShapesPath( const wxString& aKiSys3Dmod ); + const wxString& GetModuleLibraryNickname() { return m_module_nickname; } void SetModuleLibraryNickname( const wxString& aNickname ) { m_module_nickname = aNickname; } }; diff --git a/pcbnew/exporters/export_vrml.cpp b/pcbnew/exporters/export_vrml.cpp index 9002657d19..83965bfbf5 100644 --- a/pcbnew/exporters/export_vrml.cpp +++ b/pcbnew/exporters/export_vrml.cpp @@ -1154,8 +1154,7 @@ static void export_vrml_module( MODEL_VRML& aModel, BOARD* aPcb, MODULE* aModule if( !vrmlm->Is3DType( S3D_MASTER::FILE3D_VRML ) ) continue; - // expand environment variables - wxString fname = wxExpandEnvVars( vrmlm->GetShape3DName() ); + wxString fname = vrmlm->GetShape3DFullFilename(); fname.Replace( wxT( "\\" ), wxT( "/" ) ); wxString source_fname = fname; diff --git a/pcbnew/pcbnew.cpp b/pcbnew/pcbnew.cpp index 2d695c8f44..49cae3dea4 100644 --- a/pcbnew/pcbnew.cpp +++ b/pcbnew/pcbnew.cpp @@ -42,6 +42,7 @@ #include #include #include +#include <3d_viewer.h> #include #include @@ -168,10 +169,10 @@ bool EDA_APP::OnInit() bundledir.RemoveLastDir(); // Prepend in PYTHONPATH the content of the bundle libraries ! - wxSetEnv("PYTHONPATH",((wxGetenv("PYTHONPATH") != NULL ) ? (wxString(wxGetenv("PYTHONPATH")) + ":") : wxString("")) - + bundledir.GetPath() + + wxSetEnv("PYTHONPATH",((wxGetenv("PYTHONPATH") != NULL ) ? (wxString(wxGetenv("PYTHONPATH")) + ":") : wxString("")) + + bundledir.GetPath() + "/Frameworks/wxPython/lib/python2.6/site-packages/wx-3.0-osx_cocoa" ); -#endif +#endif #endif // On linux and osx, 2 others paths are // [HOME]/.kicad_plugins/ @@ -233,6 +234,9 @@ bool EDA_APP::OnInit() // Set any environment variables before loading FP_LIB_TABLE SetFootprintLibTablePath(); + // Set 3D shape path from environment variable KISYS3DMOD + Set3DShapesPath( wxT(KISYS3DMOD) ); + frame = new PCB_EDIT_FRAME( NULL, wxT( "Pcbnew" ), wxPoint( 0, 0 ), wxSize( 600, 400 ) ); #ifdef KICAD_SCRIPTING From 2acaa2871d0374178aebf569e7d34e3b703f3cdd Mon Sep 17 00:00:00 2001 From: Marco Serantoni Date: Sat, 8 Feb 2014 16:15:06 +0100 Subject: [PATCH 09/18] [MacOSX] Fixing build system, sorry guys, refining build system and make building smoother. --- CMakeLists.txt | 6 +++--- CMakeModules/download_swig.cmake | 6 ++++-- CMakeModules/download_wxpython.cmake | 2 +- Documentation/compiling/mac-osx.txt | 7 +++++-- patches/wxpython-3.0.0_macosx_multiarch.patch | 8 ++++---- pcbnew/CMakeLists.txt | 2 +- tools/Info.plist | 0 7 files changed, 18 insertions(+), 13 deletions(-) create mode 100644 tools/Info.plist diff --git a/CMakeLists.txt b/CMakeLists.txt index b653827b17..25042ed729 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -341,7 +341,9 @@ add_definitions(-DWX_COMPATIBILITY) find_package( OpenGL QUIET ) check_find_package_result( OPENGL_FOUND "OpenGL" ) -if( KICAD_SCRIPTING_WXPYTHON ) + +if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC ) + add_custom_target( lib-wxpython ) include( download_pcre ) include( download_swig ) @@ -349,9 +351,7 @@ add_custom_target( lib-wxpython ) add_dependencies( lib-wxpython pcre ) add_dependencies( lib-wxpython swig ) add_dependencies( lib-wxpython libwxpython ) -endif() -if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC ) #set(CMAKE_FIND_LIBRARY_SUFFIXES ".a;.so;.dylib;.dll") diff --git a/CMakeModules/download_swig.cmake b/CMakeModules/download_swig.cmake index 7ee8a4ebc6..e72918e89f 100644 --- a/CMakeModules/download_swig.cmake +++ b/CMakeModules/download_swig.cmake @@ -42,8 +42,10 @@ if (APPLE) set( SWIG_CFLAGS "CFLAGS=-arch ${CMAKE_OSX_ARCHITECTURES} -mmacosx-version-min=10.5" ) set( SWIG_CXXFLAGS "CXXFLAGS=-arch ${CMAKE_OSX_ARCHITECTURES} -mmacosx-version-min=10.5" ) set( SWIG_LDFLAGS "LDFLAGS=-arch ${CMAKE_OSX_ARCHITECTURES} -mmacosx-version-min=10.5" ) - set( SWIG_PYTHON "--with-python=/usr/bin/python2.6" ) endif( CMAKE_OSX_ARCHITECTURES ) + + set( SWIG_PYTHON "--with-python=/usr/bin/python2.6" ) + set( SWIG_OPTS --disable-dependency-tracking ) endif(APPLE) # = ${PREFIX}/src/glew @@ -66,7 +68,7 @@ ExternalProject_Add( swig UPDATE_COMMAND ${CMAKE_COMMAND} -E remove_directory "${SWIG_ROOT}" #PATCH_COMMAND "true" - CONFIGURE_COMMAND ./configure --prefix=${SWIG_ROOT} --with-pcre-prefix=${PCRE_ROOT} ${SWIG_CFLAGS} ${SWIG_LDFLAGS} ${SWIG_CXXFLAGS} ${SWIG_PYTHON} + CONFIGURE_COMMAND ./configure --prefix=${SWIG_ROOT} --with-pcre-prefix=${PCRE_ROOT} ${SWIG_CFLAGS} ${SWIG_LDFLAGS} ${SWIG_CXXFLAGS} ${SWIG_PYTHON} ${SWIG_OPTS} #BINARY_DIR "${PREFIX}" diff --git a/CMakeModules/download_wxpython.cmake b/CMakeModules/download_wxpython.cmake index 60225b40f4..4e1a71f688 100644 --- a/CMakeModules/download_wxpython.cmake +++ b/CMakeModules/download_wxpython.cmake @@ -74,7 +74,7 @@ ExternalProject_Add( libwxpython UPDATE_COMMAND ${CMAKE_COMMAND} -E remove_directory "${LIBWXPYTHON_ROOT}" COMMAND ${LIBWXPYTHON_EXEC} wxPython/build-wxpython.py --clean - CONFIGURE_COMMAND ${LIBWXPYTHON_EXEC} wxPython/build-wxpython.py --prefix=/Users/marco/Development/product/libwxpython_root --unicode --install ${LIBWXPYTHON_OPTS} + CONFIGURE_COMMAND ${LIBWXPYTHON_EXEC} wxPython/build-wxpython.py --prefix=${LIBWXPYTHON_ROOT} --unicode --install ${LIBWXPYTHON_OPTS} #BINARY_DIR "${PREFIX}" diff --git a/Documentation/compiling/mac-osx.txt b/Documentation/compiling/mac-osx.txt index ac606ff3c5..cb24f9632d 100644 --- a/Documentation/compiling/mac-osx.txt +++ b/Documentation/compiling/mac-osx.txt @@ -27,18 +27,21 @@ Building Kicad with no support for Scripting If you set KICAD_BUILD_DYNAMIC the building system will build all and include the needed libraries for each executable in its bundle + cmake -DKICAD_BUILD_DYNAMIC=ON . + make + Building Kicad with support for Scripting ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Due some problems with some dependencies the build of this kind of binary is a bit more complex, you should initially set KICAD_BUILD_DYNAMIC then issue for example - cmake -DKICAD_BUILD_DYNAMIC=ON + cmake -DKICAD_BUILD_DYNAMIC=ON . make lib-wxpython After successfully building you can set your KICAD_SCRIPTING* options (for example): - cmake -DKICAD_SCRIPTING=ON -DKICAD_SCRIPTING_WXPYTHON=ON + cmake -DKICAD_SCRIPTING=ON -DKICAD_SCRIPTING_WXPYTHON=ON . make The system will build all accordling your choices and package all in the bundle diff --git a/patches/wxpython-3.0.0_macosx_multiarch.patch b/patches/wxpython-3.0.0_macosx_multiarch.patch index e8270251b7..d3b70dd0ec 100644 --- a/patches/wxpython-3.0.0_macosx_multiarch.patch +++ b/patches/wxpython-3.0.0_macosx_multiarch.patch @@ -1,6 +1,6 @@ === modified file 'wxPython/config.py' ---- wxPython/config.py 2014-02-07 20:23:11 +0000 -+++ wxPython/config.py 2014-02-07 21:00:18 +0000 +--- wxPython/config.py 2014-02-08 12:23:31 +0000 ++++ wxPython/config.py 2014-02-08 13:58:07 +0000 @@ -22,6 +22,7 @@ import sys, os, glob, fnmatch, tempfile @@ -17,8 +17,8 @@ - cflags.append(ARCH) - lflags.append("-arch") - lflags.append(ARCH) -+ cflags.append('-arch ' + re.sub(',',' -arch ',ARCH)) -+ lflags.append('-arch ' + re.sub(',',' -arch ',ARCH)) ++ cflags.append("-arch " + re.sub(","," -arch ",ARCH)) ++ #lflags.append("-arch " + re.sub(","," -arch ",ARCH)) if not os.environ.get('CC') or not os.environ.get('CXX'): os.environ["CXX"] = getWxConfigValue('--cxx') diff --git a/pcbnew/CMakeLists.txt b/pcbnew/CMakeLists.txt index e486d013d9..c1cf74bd32 100644 --- a/pcbnew/CMakeLists.txt +++ b/pcbnew/CMakeLists.txt @@ -598,7 +598,7 @@ if( KICAD_SCRIPTING ) # copies all into PYTHON_DEST then all into the bundle ! add_custom_target( _pcbnew_py_copy ALL COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/pcbnew/pcbnew.py "${PYTHON_DEST}" - DEPENDS FixSwigImportsModuleScripting + DEPENDS FixSwigImportsScripting COMMENT "Copying pcbnew.py into PYTHON_DEST" ) diff --git a/tools/Info.plist b/tools/Info.plist new file mode 100644 index 0000000000..e69de29bb2 From 9263a4e798cb3e7f156d72e761b2e3048952a5b3 Mon Sep 17 00:00:00 2001 From: Marco Serantoni Date: Sat, 8 Feb 2014 18:33:21 +0100 Subject: [PATCH 10/18] [MacOSX] Setting Set3DShapesPath --- common/edaappl.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/common/edaappl.cpp b/common/edaappl.cpp index c3595b0f8b..c4780b49f3 100644 --- a/common/edaappl.cpp +++ b/common/edaappl.cpp @@ -1231,8 +1231,22 @@ bool EDA_APP::Set3DShapesPath( const wxString& aKiSys3Dmod ) wxString relpath( wxT( "modules/packages3d" ) ); // Apple MacOSx -#ifdef __APPLE__ - // TO DO +#ifdef __WXMAC__ + path = wxT("/Library/Application Support/kicad/modules/packages3d/"); + + if( wxFileName::DirExists( path ) ) + { + wxSetEnv( aKiSys3Dmod, path ); + return true; + } + + path = wxString( wxGetenv( wxT( "HOME" ) ) ) + wxT("/Library/Application Support/kicad/modules/packages3d/"); + + if( wxFileName::DirExists( path ) ) + { + wxSetEnv( aKiSys3Dmod, path ); + return true; + } #elif defined(__UNIX__) // Linux and non-Apple Unix path = wxT("/usr/local/kicad/share/") + relpath; From bbcd2c61d6b08139961f1b4ced64aed9c48eac3f Mon Sep 17 00:00:00 2001 From: Miguel Angel Ajo Date: Sun, 9 Feb 2014 00:21:47 +0100 Subject: [PATCH 11/18] BOARD saving test --- pcbnew/scripting/tests/testLoadSave.py | 29 -------------------------- qa/testcases/test_002_board_class.py | 22 +++++++++++++++++++ scripting/kicad.i | 2 +- 3 files changed, 23 insertions(+), 30 deletions(-) delete mode 100644 pcbnew/scripting/tests/testLoadSave.py diff --git a/pcbnew/scripting/tests/testLoadSave.py b/pcbnew/scripting/tests/testLoadSave.py deleted file mode 100644 index d8d9649a38..0000000000 --- a/pcbnew/scripting/tests/testLoadSave.py +++ /dev/null @@ -1,29 +0,0 @@ -from pcbnew import * -import unittest - -class TestLoadSave(unittest.TestCase): - - def setUp(self): - self.TITLE="Test Board" - self.COMMENT1="For load/save test" - self.FILENAME="/tmp/test.brd" - - def test_00_save(self): - pcb = BOARD() - pcb.GetTitleBlock().SetTitle(self.TITLE) - pcb.GetTitleBlock().SetComment1(self.COMMENT1) - result = SaveBoard(self.FILENAME,pcb) - self.assertTrue(result) - - def test_01_load(self): - pcb2 = LoadBoard(self.FILENAME) - self.assertIsNotNone(pcb2) - - def test_02_titleblock_ok(self): - pcb2 = LoadBoard(self.FILENAME) - tb = pcb2.GetTitleBlock() - self.assertEqual(tb.GetTitle(),self.TITLE) - self.assertEqual(tb.GetComment1(),self.COMMENT1) - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/qa/testcases/test_002_board_class.py b/qa/testcases/test_002_board_class.py index c9897e97f2..79773ba0c3 100644 --- a/qa/testcases/test_002_board_class.py +++ b/qa/testcases/test_002_board_class.py @@ -1,7 +1,10 @@ import code import unittest +import os import pcbnew import pdb +import tempfile + from pcbnew import * @@ -9,6 +12,9 @@ class TestBoardClass(unittest.TestCase): def setUp(self): self.pcb = LoadBoard("data/complex_hierarchy.kicad_pcb") + self.TITLE="Test Board" + self.COMMENT1="For load/save test" + self.FILENAME=tempfile.mktemp()+".kicad_pcb" def test_pcb_find_module(self): module = self.pcb.FindModule('P1') @@ -74,6 +80,22 @@ class TestBoardClass(unittest.TestCase): self.assertEqual(pad.this, p2.this) self.assertEqual(pad.this, p3.this) + def test_pcb_save_and_load(self): + pcb = BOARD() + pcb.GetTitleBlock().SetTitle(self.TITLE) + pcb.GetTitleBlock().SetComment1(self.COMMENT1) + result = SaveBoard(self.FILENAME,pcb) + self.assertTrue(result) + + pcb2 = LoadBoard(self.FILENAME) + self.assertIsNotNone(pcb2) + + tb = pcb2.GetTitleBlock() + self.assertEqual(tb.GetTitle(),self.TITLE) + self.assertEqual(tb.GetComment1(),self.COMMENT1) + + os.remove(self.FILENAME) + #def test_interactive(self): # code.interact(local=locals()) diff --git a/scripting/kicad.i b/scripting/kicad.i index 5887886204..451f541417 100644 --- a/scripting/kicad.i +++ b/scripting/kicad.i @@ -66,7 +66,7 @@ #include #include #include - #include + #include #include #include From 788b38c09bc0f3c3457597e40ee6afe163e2cd54 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Sun, 9 Feb 2014 21:06:05 +0100 Subject: [PATCH 12/18] Cosmetic enhancement: better icon for bitmap2component. --- bitmaps_png/cpp_26/image.cpp | 144 +- bitmaps_png/cpp_48/icon_bitmap2component.cpp | 412 ++-- bitmaps_png/icons/icon_bitmap2component.ico | Bin 103478 -> 3262 bytes bitmaps_png/sources/icon_bitmap2component.svg | 1746 ++++++++++++----- bitmaps_png/sources/image.svg | 1488 +++++++------- 5 files changed, 2213 insertions(+), 1577 deletions(-) diff --git a/bitmaps_png/cpp_26/image.cpp b/bitmaps_png/cpp_26/image.cpp index 967f38ae4d..72f3c8bc83 100644 --- a/bitmaps_png/cpp_26/image.cpp +++ b/bitmaps_png/cpp_26/image.cpp @@ -8,84 +8,72 @@ static const unsigned char png[] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c, - 0xce, 0x00, 0x00, 0x04, 0xba, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x96, 0xcf, 0x6f, 0x54, - 0x55, 0x14, 0xc7, 0x3f, 0xf7, 0xcd, 0x9b, 0x9f, 0x9d, 0x96, 0x29, 0x9d, 0x99, 0x76, 0x86, 0x52, - 0x09, 0xa5, 0x50, 0xa0, 0x88, 0x8a, 0x89, 0x88, 0xa2, 0xd5, 0x0d, 0xa2, 0x22, 0x1b, 0x15, 0xf7, - 0xc6, 0x85, 0xd1, 0xb8, 0x72, 0x61, 0xe2, 0x46, 0x37, 0x12, 0xff, 0x01, 0x59, 0xb0, 0x30, 0x24, - 0x2e, 0x8c, 0x86, 0xc4, 0x68, 0xfc, 0x81, 0x0b, 0xa9, 0x91, 0x5f, 0x89, 0x18, 0x02, 0x48, 0x11, - 0x69, 0x4b, 0x29, 0xb4, 0x9d, 0xb6, 0xd0, 0x99, 0x32, 0xd3, 0xf7, 0xeb, 0xde, 0xfb, 0xae, 0x8b, - 0x19, 0x60, 0x08, 0xd5, 0x05, 0x31, 0x2c, 0x8c, 0xe7, 0xe5, 0x2e, 0xee, 0xb9, 0x79, 0xe7, 0x7b, - 0xce, 0xbb, 0xe7, 0xfb, 0x3d, 0x4f, 0x18, 0x63, 0xb8, 0x1f, 0x66, 0x71, 0x9f, 0xec, 0x7f, 0xa0, - 0x7b, 0x36, 0x31, 0x38, 0x38, 0x68, 0xb7, 0x76, 0x74, 0xbc, 0x18, 0x6a, 0xfd, 0x48, 0xf3, 0xc1, - 0xa3, 0x5b, 0xb6, 0xac, 0xcd, 0xe7, 0x72, 0xdd, 0xb3, 0x33, 0x33, 0x13, 0x27, 0x4f, 0x9d, 0x1a, - 0xb9, 0xe7, 0x4a, 0x22, 0x91, 0xd3, 0x85, 0x8e, 0x8e, 0xaf, 0xed, 0xc2, 0xca, 0x07, 0xbe, 0x94, - 0x81, 0xbf, 0x43, 0x47, 0x22, 0x49, 0x81, 0x00, 0x20, 0x12, 0x89, 0xf0, 0xf0, 0xa6, 0x4d, 0x78, - 0x9e, 0x47, 0xb1, 0xab, 0xeb, 0x89, 0xb3, 0xe7, 0xce, 0x23, 0xfe, 0xae, 0x76, 0x73, 0xe7, 0xc6, - 0x34, 0xf9, 0x0c, 0x06, 0xcb, 0x8a, 0x78, 0x55, 0xd7, 0xfb, 0xc9, 0xce, 0x64, 0x32, 0xeb, 0x9f, - 0x7f, 0x6e, 0x47, 0x32, 0xdb, 0x91, 0x05, 0x01, 0x02, 0x70, 0x5d, 0x8f, 0xb1, 0x89, 0x71, 0x26, - 0xaf, 0x5c, 0xa5, 0xbb, 0xbb, 0x9b, 0x77, 0xde, 0x7e, 0x8b, 0x54, 0x32, 0x89, 0x10, 0xe2, 0x56, - 0xc8, 0x30, 0xd4, 0x94, 0x66, 0x4a, 0xb4, 0xb5, 0xb6, 0x91, 0x4a, 0xb5, 0xd4, 0xc3, 0x9a, 0x26, - 0x6c, 0x63, 0xc0, 0x18, 0xe6, 0xcb, 0xe5, 0xc4, 0xf7, 0x87, 0x0e, 0xad, 0xb3, 0x37, 0x0d, 0x6c, - 0x48, 0x3f, 0xb9, 0x6d, 0x2b, 0x4a, 0xa9, 0x3b, 0x12, 0x1d, 0xd8, 0xd8, 0xcf, 0x52, 0x1c, 0x5b, - 0xb8, 0xb1, 0x40, 0xba, 0x25, 0xcd, 0xd0, 0xcf, 0x87, 0x39, 0xf0, 0xd9, 0xe7, 0x3c, 0xb5, 0x7d, - 0x1b, 0x7b, 0x5e, 0x7e, 0x05, 0x21, 0xc0, 0x18, 0x41, 0x2c, 0x16, 0x43, 0x6b, 0x8d, 0xd6, 0x0a, - 0x29, 0x15, 0xb9, 0x5c, 0x96, 0x99, 0xb9, 0xd9, 0xb4, 0x1d, 0x8f, 0x27, 0x2c, 0xc7, 0x59, 0x44, - 0x29, 0xb5, 0x64, 0xe0, 0x66, 0xd7, 0xe2, 0xe2, 0x22, 0xfb, 0xf6, 0xef, 0xe7, 0x85, 0x9d, 0x3b, - 0x69, 0x49, 0xa7, 0x59, 0x96, 0x59, 0x46, 0x76, 0x79, 0x96, 0x4b, 0x97, 0xc6, 0x68, 0x6d, 0x6b, - 0xa5, 0xb3, 0xb3, 0x13, 0xa9, 0x1d, 0x2c, 0x21, 0xc0, 0xd2, 0x58, 0x11, 0x8d, 0x65, 0x45, 0x88, - 0x27, 0xe2, 0x96, 0x6d, 0x47, 0x23, 0xc6, 0x71, 0x5d, 0xa4, 0x94, 0xff, 0xf0, 0xed, 0xeb, 0x76, - 0xed, 0xfa, 0x75, 0x76, 0xef, 0xda, 0x45, 0x32, 0x11, 0x23, 0x91, 0x58, 0xce, 0x9b, 0x6f, 0xbc, - 0xce, 0xd4, 0xd4, 0x34, 0xe5, 0x85, 0x05, 0xf2, 0x9d, 0x5d, 0x0c, 0x0f, 0x9f, 0xa7, 0xa7, 0x67, - 0x25, 0xe3, 0xe3, 0x13, 0xf4, 0xf4, 0xf4, 0x20, 0x84, 0x40, 0xdb, 0x0a, 0x5b, 0x58, 0xc6, 0x56, - 0x81, 0xc4, 0xf3, 0x3c, 0x82, 0x20, 0x58, 0xba, 0xa2, 0x46, 0x83, 0xf8, 0xbe, 0x4f, 0xa5, 0x52, - 0x61, 0x4d, 0xef, 0x6a, 0x4a, 0xa5, 0x69, 0x0e, 0x1e, 0xfc, 0x0a, 0x15, 0x2a, 0x04, 0x10, 0x89, - 0xd8, 0x0c, 0x0d, 0x0d, 0xf1, 0xd0, 0xe6, 0xcd, 0xf4, 0xf7, 0xf7, 0xb3, 0xa2, 0xb8, 0x82, 0xb1, - 0xd1, 0x31, 0x0a, 0xc5, 0x02, 0xd1, 0x68, 0x14, 0x5f, 0x06, 0x58, 0x81, 0x92, 0xc6, 0x75, 0x5c, - 0x1c, 0xc7, 0xc1, 0x75, 0x5d, 0x5c, 0xd7, 0x45, 0xeb, 0x10, 0xd7, 0xf5, 0x70, 0x1c, 0x17, 0xd7, - 0x71, 0x70, 0x1c, 0x87, 0xb1, 0xd1, 0x51, 0xd6, 0xf4, 0xae, 0x66, 0x64, 0x74, 0x84, 0xa3, 0xc7, - 0x8e, 0xb3, 0xba, 0x77, 0x15, 0xae, 0xe3, 0x72, 0x79, 0x62, 0x92, 0xab, 0x93, 0x93, 0x14, 0xba, - 0x8a, 0x38, 0x8e, 0xc3, 0x89, 0x13, 0xc7, 0xc8, 0xe7, 0x73, 0xf8, 0xbe, 0x4f, 0xad, 0x56, 0xc3, - 0x75, 0x5c, 0xa4, 0x94, 0xc6, 0x0e, 0x7c, 0x69, 0x1c, 0xd7, 0xc5, 0xf7, 0xfd, 0x5b, 0x55, 0x64, - 0x32, 0x19, 0x1c, 0xd7, 0xe1, 0x46, 0xb5, 0x8a, 0xd6, 0x9a, 0x54, 0x32, 0x85, 0x92, 0x0a, 0x83, - 0xa0, 0x54, 0x9a, 0x66, 0x60, 0xe3, 0x00, 0xdf, 0x7c, 0xfb, 0x1d, 0xbd, 0x7d, 0xbd, 0x3c, 0xf6, - 0xf8, 0x56, 0xca, 0xf3, 0x65, 0x7e, 0x3f, 0x37, 0xcc, 0x86, 0xf5, 0xeb, 0xa8, 0xd6, 0x1c, 0x8e, - 0x1e, 0xfb, 0x85, 0x7c, 0x67, 0x17, 0x33, 0x33, 0xb3, 0x74, 0x64, 0xb3, 0x04, 0x52, 0x1b, 0x4b, - 0x69, 0x8d, 0x54, 0x0a, 0xa9, 0x14, 0x4a, 0x6b, 0x94, 0xd6, 0x84, 0x61, 0x88, 0xd6, 0x21, 0x81, - 0xef, 0xe3, 0x7b, 0x1e, 0x4a, 0x49, 0xa2, 0x31, 0x9b, 0x2b, 0x57, 0xc6, 0xc9, 0x66, 0x73, 0x8c, - 0x8d, 0x5f, 0xe2, 0xb5, 0x3d, 0xaf, 0x22, 0xb0, 0x38, 0xf0, 0xe9, 0x17, 0x9c, 0x3e, 0x73, 0x96, - 0xc1, 0x67, 0xb6, 0x53, 0x9e, 0x9f, 0x67, 0x6d, 0x5f, 0x1f, 0xe5, 0x4a, 0x85, 0x7c, 0x3e, 0x4f, - 0xad, 0x56, 0x83, 0x30, 0x44, 0x2b, 0x89, 0xad, 0x94, 0xac, 0xdf, 0x84, 0xb8, 0x4d, 0x38, 0x03, - 0x77, 0xdd, 0x57, 0x9d, 0x16, 0x86, 0xcc, 0xb2, 0x76, 0x0a, 0x45, 0xc9, 0xb1, 0xe3, 0x27, 0x28, - 0x7f, 0x62, 0xe8, 0x4e, 0x6d, 0xe6, 0x8f, 0xea, 0x19, 0xce, 0x0d, 0xef, 0xe3, 0xfd, 0xf7, 0xde, - 0x45, 0x29, 0x45, 0x6b, 0x3a, 0x8d, 0x65, 0x59, 0xc4, 0x63, 0x31, 0x0c, 0x06, 0xa9, 0x14, 0x96, - 0xd6, 0x0a, 0x8c, 0xc1, 0x98, 0x10, 0x63, 0xc2, 0x5b, 0x44, 0xab, 0x13, 0xd0, 0x70, 0xf3, 0x71, - 0x3d, 0x97, 0x7c, 0xbe, 0x93, 0xb9, 0x6b, 0x33, 0x64, 0xdb, 0xdb, 0xf9, 0xf1, 0x87, 0x23, 0x5c, - 0x4d, 0x97, 0x99, 0xd0, 0x97, 0xf1, 0xe4, 0x22, 0xb9, 0x5c, 0x96, 0xab, 0x93, 0x53, 0x08, 0x21, - 0xe8, 0xe9, 0x59, 0xc5, 0xf5, 0x6b, 0x73, 0x24, 0x5b, 0x12, 0x84, 0x46, 0xa3, 0x54, 0x20, 0x2c, - 0x19, 0x48, 0xa1, 0x43, 0x8d, 0x09, 0x4d, 0x63, 0x35, 0xc0, 0x42, 0x83, 0x65, 0x09, 0x22, 0x96, - 0x85, 0xd1, 0x06, 0x0c, 0xa4, 0x5b, 0xda, 0xea, 0xe0, 0x02, 0xf2, 0xc5, 0x76, 0x2e, 0x24, 0xcf, - 0x50, 0x8a, 0x8f, 0xd2, 0x96, 0x81, 0x5c, 0x36, 0x47, 0xa1, 0xd0, 0x49, 0x6b, 0x6b, 0x9a, 0xfe, - 0x75, 0xfd, 0xcc, 0xce, 0xcd, 0x11, 0x8d, 0xc6, 0xd0, 0x3a, 0x44, 0x05, 0x0a, 0x4b, 0x49, 0xd5, - 0x60, 0xf2, 0xed, 0x35, 0x7b, 0x6d, 0x96, 0x45, 0x77, 0x11, 0x3b, 0x62, 0x13, 0x8f, 0xc5, 0x09, - 0xb5, 0x26, 0x97, 0xcd, 0x72, 0xf4, 0xe8, 0x11, 0x06, 0x9f, 0x7e, 0x96, 0x6a, 0xb5, 0xca, 0xee, - 0x97, 0x76, 0x62, 0xc7, 0x6b, 0x64, 0x96, 0x47, 0x49, 0xa4, 0x5a, 0xc8, 0xe5, 0xb2, 0xe4, 0xb3, - 0x39, 0xfa, 0xfa, 0xd6, 0x32, 0x35, 0x35, 0x85, 0xd6, 0x9a, 0x30, 0xd4, 0x84, 0x5a, 0x23, 0xa5, - 0x12, 0x76, 0x20, 0x25, 0x5a, 0xd5, 0x01, 0x0c, 0x06, 0x61, 0xa0, 0xba, 0x50, 0x65, 0x09, 0xa9, - 0x24, 0x9e, 0x88, 0x73, 0x78, 0xe8, 0x30, 0x1b, 0x07, 0x36, 0x50, 0xab, 0xd6, 0xd8, 0xfb, 0xd1, - 0x07, 0x5c, 0xf8, 0x73, 0x84, 0x95, 0xc5, 0x22, 0xc5, 0x62, 0x91, 0xf5, 0xfd, 0xeb, 0x99, 0x9b, - 0x9b, 0xe5, 0xe2, 0xc8, 0x45, 0x80, 0x7a, 0xa7, 0x1a, 0x83, 0x54, 0x81, 0xb1, 0x95, 0x52, 0x48, - 0x19, 0xdc, 0xa5, 0x75, 0x37, 0xd5, 0xa1, 0x0e, 0x52, 0x27, 0x6d, 0x34, 0x1a, 0x45, 0x29, 0xc5, - 0xc9, 0x5f, 0x7f, 0xa3, 0xd0, 0x55, 0x20, 0x9e, 0x88, 0xf3, 0xe0, 0xc0, 0x06, 0xda, 0x97, 0x2d, - 0x27, 0x9e, 0x88, 0x33, 0x7c, 0xfe, 0x1c, 0xa5, 0xe9, 0x52, 0x5d, 0xce, 0xc4, 0xed, 0x24, 0x03, - 0x29, 0x85, 0x5d, 0x59, 0xa8, 0x78, 0xc6, 0x34, 0x2e, 0xbe, 0x59, 0x7e, 0xc5, 0xd2, 0x7a, 0x14, - 0xb1, 0x2c, 0x92, 0xc9, 0x04, 0xf3, 0xe5, 0xeb, 0x18, 0x63, 0x48, 0xa5, 0x52, 0xdc, 0xa8, 0x2c, - 0xa0, 0x43, 0x43, 0x10, 0x04, 0x8d, 0x0e, 0x16, 0xb7, 0x5f, 0xb1, 0x2c, 0xca, 0x95, 0x8a, 0x67, - 0x5f, 0x1c, 0x19, 0xd9, 0xeb, 0x7b, 0xc1, 0x87, 0xa9, 0x96, 0x44, 0xba, 0x71, 0x28, 0xc2, 0x26, - 0x35, 0xbd, 0xd5, 0xea, 0x4d, 0xfb, 0xa6, 0x81, 0x73, 0xa7, 0xaf, 0x69, 0x0e, 0x89, 0xc6, 0xd4, - 0xf0, 0x7d, 0x6f, 0x71, 0x6a, 0xba, 0xf4, 0xb1, 0x00, 0x62, 0x40, 0x1a, 0x68, 0x69, 0xd4, 0x11, - 0xfd, 0x97, 0xa6, 0xb7, 0x6c, 0xe4, 0xe0, 0x00, 0x35, 0xf1, 0x9f, 0xfb, 0xaf, 0xfb, 0x0b, 0x65, - 0x77, 0xac, 0x4d, 0xaa, 0xdb, 0x20, 0xef, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, - 0x42, 0x60, 0x82, + 0xce, 0x00, 0x00, 0x04, 0x02, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x96, 0x4f, 0x6c, 0x54, + 0x55, 0x14, 0xc6, 0x7f, 0xf7, 0xde, 0x37, 0x6f, 0xca, 0xbc, 0x19, 0x66, 0xe8, 0x14, 0xa4, 0x25, + 0x25, 0xad, 0x36, 0xe2, 0xa4, 0x35, 0x44, 0x49, 0x86, 0x56, 0xd0, 0xa5, 0x51, 0x16, 0x18, 0x84, + 0x15, 0x6e, 0x24, 0xae, 0x5c, 0xb0, 0x94, 0xa4, 0x09, 0x26, 0x68, 0x88, 0x0b, 0x37, 0xa2, 0xac, + 0x88, 0x1b, 0x13, 0x17, 0x06, 0x49, 0x48, 0x8c, 0x84, 0xd0, 0x00, 0x89, 0x04, 0x5b, 0x9b, 0x40, + 0x80, 0x50, 0x42, 0xac, 0xa5, 0xd3, 0xd2, 0x16, 0xa6, 0x33, 0x03, 0xb4, 0xd2, 0xd7, 0x79, 0xd3, + 0xf7, 0xef, 0xba, 0x18, 0x5a, 0x3a, 0xa0, 0x6d, 0x25, 0x86, 0x95, 0x27, 0x79, 0xc9, 0xbd, 0xe7, + 0x9d, 0x93, 0x2f, 0xe7, 0x9c, 0xef, 0x9c, 0x73, 0x85, 0xd6, 0x9a, 0xe7, 0x21, 0x92, 0xe7, 0x24, + 0xcf, 0x0d, 0xc8, 0x78, 0x52, 0xb1, 0x6f, 0xdf, 0x91, 0x94, 0x6d, 0x97, 0xb7, 0xcc, 0xce, 0xce, + 0x9a, 0xae, 0x3b, 0x7b, 0xe5, 0xdc, 0xb9, 0x23, 0x85, 0xff, 0x02, 0x48, 0x64, 0xb3, 0x1f, 0x37, + 0x00, 0xef, 0x0b, 0x21, 0x62, 0x96, 0x65, 0xb5, 0xa6, 0x52, 0x7a, 0xbf, 0x52, 0x9e, 0x00, 0x8d, + 0xe7, 0x09, 0xee, 0xdd, 0xd3, 0xc7, 0xa5, 0x54, 0xfd, 0x42, 0x08, 0x9e, 0xf1, 0x0b, 0x84, 0x10, + 0xa7, 0xc5, 0xd1, 0xa3, 0x27, 0xa6, 0x76, 0xee, 0x7c, 0x23, 0x65, 0x9a, 0x11, 0x7c, 0x3f, 0x64, + 0x66, 0xa6, 0xc2, 0xdc, 0x9c, 0x87, 0xd6, 0x20, 0x84, 0x44, 0x29, 0xf9, 0xc8, 0x41, 0x22, 0x84, + 0xa4, 0x58, 0x9c, 0x64, 0xfd, 0xfa, 0x26, 0xa4, 0x94, 0x38, 0x8e, 0x83, 0xef, 0xbb, 0xd4, 0xd7, + 0xaf, 0x45, 0x08, 0x09, 0x84, 0xb8, 0xae, 0x87, 0x10, 0x02, 0x29, 0x25, 0xe5, 0xb2, 0x4b, 0x10, + 0x08, 0xfa, 0xfa, 0x06, 0x02, 0xa3, 0xa9, 0x29, 0x99, 0x52, 0x4a, 0x23, 0x44, 0x48, 0x10, 0x78, + 0x4c, 0x4d, 0xcd, 0x30, 0x3d, 0x6d, 0x13, 0x86, 0xa0, 0x94, 0x81, 0x52, 0x0a, 0xa5, 0x0c, 0xa4, + 0x54, 0x7c, 0x7f, 0xfc, 0x07, 0xcc, 0x8e, 0x5d, 0x5c, 0xfd, 0xf2, 0x53, 0xbe, 0x3a, 0xf8, 0x11, + 0x37, 0x6e, 0x0c, 0x90, 0x4e, 0xa7, 0x09, 0x82, 0x8d, 0x94, 0x4a, 0xf7, 0x29, 0x04, 0x49, 0xde, + 0xde, 0xfe, 0x1a, 0x65, 0x37, 0x64, 0x62, 0x46, 0x33, 0xe1, 0x48, 0x82, 0xc1, 0x41, 0x84, 0x88, + 0x29, 0xc3, 0x75, 0xbd, 0x15, 0xe5, 0xd8, 0xf7, 0x3d, 0x6e, 0xdc, 0x1a, 0x26, 0x97, 0xec, 0xa0, + 0xae, 0x92, 0x24, 0x9b, 0xcd, 0xb2, 0x63, 0xc7, 0xbb, 0xb4, 0xb5, 0xb5, 0xd1, 0xdb, 0xfb, 0x1b, + 0x9e, 0xe7, 0x73, 0xf2, 0x6c, 0x3f, 0x17, 0x6e, 0x96, 0x70, 0x83, 0xaa, 0x4f, 0xe0, 0xbb, 0xc4, + 0x0c, 0x45, 0xa5, 0x52, 0x79, 0x9a, 0x0c, 0x7f, 0x27, 0x61, 0x18, 0x32, 0x35, 0x35, 0xcc, 0x37, + 0x87, 0x3f, 0xe1, 0xc4, 0xc9, 0xcf, 0x78, 0xef, 0xd0, 0x2e, 0x00, 0xfa, 0xfa, 0xfa, 0x88, 0xc7, + 0xe3, 0x0b, 0x76, 0xef, 0x6c, 0xdb, 0x4c, 0xa5, 0xe2, 0x92, 0xcb, 0x0d, 0xb1, 0x66, 0xcd, 0x26, + 0x3c, 0x2f, 0x41, 0x71, 0xce, 0xa0, 0x30, 0x39, 0xb2, 0x32, 0xa0, 0xf1, 0xf1, 0x9b, 0x6c, 0xdf, + 0xbe, 0x0d, 0xcb, 0xb2, 0x38, 0xd8, 0xdd, 0x4d, 0x34, 0x1a, 0x01, 0x20, 0x93, 0xc9, 0xa0, 0x35, + 0x78, 0x9e, 0x5f, 0xa5, 0xb0, 0x61, 0x10, 0x89, 0x68, 0x5a, 0x5b, 0x5f, 0xe6, 0xd2, 0xa5, 0x7e, + 0x5a, 0x5a, 0xde, 0xaa, 0x32, 0x4e, 0x08, 0x0c, 0x21, 0x96, 0x06, 0x79, 0xf8, 0xf0, 0x3e, 0x6d, + 0x6d, 0x2f, 0x21, 0x84, 0xaa, 0xd1, 0x5f, 0xbb, 0x76, 0x95, 0x52, 0xa9, 0x84, 0xeb, 0xba, 0x98, + 0xa6, 0x49, 0x57, 0xd7, 0xb6, 0x85, 0x7f, 0x5a, 0x6b, 0x32, 0x99, 0x76, 0xae, 0x5f, 0xef, 0x27, + 0x99, 0xcc, 0xcc, 0x37, 0xac, 0x58, 0x06, 0xa8, 0x48, 0x22, 0x51, 0xff, 0xb8, 0x1f, 0x04, 0x5c, + 0xbc, 0xf8, 0x0b, 0xc5, 0xe2, 0x03, 0x5c, 0xd7, 0x44, 0xa9, 0x14, 0x8e, 0x13, 0x70, 0xfe, 0xfc, + 0x59, 0x7c, 0xff, 0x71, 0xbd, 0x0d, 0xc3, 0x24, 0x1e, 0x17, 0x2b, 0x9f, 0x0c, 0xb1, 0xd8, 0x2a, + 0xc2, 0xf0, 0xf1, 0x3c, 0x1c, 0x1b, 0xcb, 0x61, 0x59, 0xab, 0x69, 0x58, 0xdb, 0xcc, 0xe5, 0xcb, + 0xbf, 0x72, 0xea, 0xd4, 0x8f, 0x24, 0x56, 0xa7, 0x49, 0x26, 0xd7, 0xd1, 0xd3, 0x73, 0xba, 0xc6, + 0x37, 0x91, 0x48, 0xa0, 0x75, 0x38, 0x3f, 0x19, 0x96, 0x8e, 0xc8, 0xb2, 0x12, 0x35, 0xf7, 0x42, + 0xa1, 0x40, 0x7d, 0xba, 0x91, 0x9e, 0x9e, 0x9f, 0x39, 0x7c, 0xf8, 0x10, 0x00, 0xb7, 0x6f, 0x8f, + 0xf0, 0xf5, 0xd1, 0x63, 0xe4, 0xf3, 0xa3, 0x28, 0x25, 0x17, 0x01, 0x25, 0xb9, 0x7b, 0xb7, 0x58, + 0xed, 0xab, 0xa5, 0x40, 0xb4, 0xd6, 0x18, 0x46, 0x2d, 0x5f, 0x82, 0x20, 0x20, 0x5a, 0x17, 0xe5, + 0xee, 0x9d, 0xf1, 0x05, 0xdd, 0xc4, 0xc4, 0x04, 0xb1, 0x58, 0x0c, 0xa5, 0x6a, 0x6d, 0xa5, 0x54, + 0xf8, 0xfe, 0x5c, 0xf5, 0xbc, 0x14, 0x19, 0x84, 0x10, 0x94, 0xcb, 0x76, 0x8d, 0x2e, 0x1a, 0x8d, + 0x52, 0x98, 0xbc, 0xc3, 0xde, 0x0f, 0x3e, 0xa4, 0xb3, 0xb3, 0x8b, 0x96, 0x96, 0x56, 0x0e, 0x1c, + 0xe8, 0x66, 0x74, 0x74, 0x18, 0xdb, 0x9e, 0xa9, 0x49, 0xf3, 0xec, 0xec, 0x0c, 0xa9, 0x54, 0xe3, + 0xca, 0x52, 0xe7, 0x38, 0x4e, 0xcd, 0x7d, 0xf3, 0xe6, 0x2d, 0xf4, 0xf6, 0x5e, 0x40, 0x48, 0xc5, + 0xb1, 0x6f, 0xbf, 0x43, 0x29, 0xc5, 0xfd, 0x7b, 0x45, 0xa6, 0xa7, 0x4a, 0xb4, 0xb7, 0xbf, 0xca, + 0xe2, 0xfd, 0x66, 0xdb, 0x7f, 0x62, 0x18, 0xeb, 0x96, 0x8f, 0xa8, 0x9a, 0x2a, 0x89, 0xd6, 0xfe, + 0xa2, 0x28, 0x25, 0xd9, 0x6c, 0x27, 0xc5, 0xc9, 0x3b, 0x8c, 0xe6, 0x7e, 0x67, 0x78, 0xe8, 0x26, + 0x23, 0xb9, 0x3f, 0x88, 0x5b, 0x71, 0x32, 0x99, 0xf6, 0x9a, 0x6c, 0x3c, 0x78, 0x60, 0xff, 0xf3, + 0x9a, 0x78, 0x52, 0x1a, 0x1b, 0x5f, 0x64, 0x70, 0xf0, 0x3a, 0x5b, 0xb7, 0xbe, 0xb9, 0xa8, 0xc8, + 0xab, 0xd9, 0xbd, 0x7b, 0x0f, 0x42, 0x54, 0x23, 0x36, 0xcd, 0x3a, 0x3c, 0xcf, 0x67, 0xf1, 0x38, + 0x1b, 0x1f, 0xcf, 0xd1, 0xd2, 0xd2, 0xc9, 0xf4, 0xf4, 0xdc, 0xf2, 0x64, 0x98, 0x97, 0x64, 0x72, + 0x23, 0xf9, 0xfc, 0xd8, 0x53, 0xf5, 0x53, 0x4a, 0x61, 0x59, 0xf1, 0xa7, 0xec, 0xcb, 0x65, 0x9b, + 0x30, 0x8c, 0x63, 0x9a, 0x75, 0xff, 0x6e, 0xc3, 0xae, 0x5a, 0x15, 0x67, 0x72, 0xd2, 0x66, 0x60, + 0xe0, 0x0a, 0x61, 0x18, 0x2c, 0x69, 0x3b, 0x36, 0x36, 0xc2, 0xf0, 0xf0, 0x04, 0x9b, 0x36, 0xbd, + 0x5e, 0xbb, 0x61, 0x1d, 0xc7, 0xd5, 0x2c, 0xc7, 0x08, 0xa0, 0xa1, 0xa1, 0x09, 0x80, 0x33, 0x67, + 0x7a, 0x68, 0x6f, 0x7f, 0x85, 0x0d, 0x1b, 0x9a, 0x48, 0xa7, 0xeb, 0x01, 0x81, 0x6d, 0xdb, 0xe4, + 0xf3, 0x79, 0x86, 0x86, 0x6e, 0xd1, 0xdc, 0xbc, 0x85, 0x8e, 0x8e, 0x17, 0x6a, 0x7c, 0x5d, 0xd7, + 0x43, 0xec, 0xdd, 0xfb, 0xc5, 0xe7, 0x1d, 0x1d, 0xcd, 0xfb, 0x41, 0x46, 0xc3, 0x50, 0x53, 0x2e, + 0xbb, 0xb8, 0x8f, 0xe6, 0x7c, 0x75, 0xe9, 0x29, 0xa4, 0xac, 0x2e, 0x3e, 0x29, 0xe7, 0xcf, 0x02, + 0xdf, 0xb7, 0xa5, 0x69, 0x56, 0x54, 0x24, 0xa2, 0xa8, 0x54, 0xcc, 0xa0, 0xae, 0xae, 0x3e, 0x54, + 0xca, 0x44, 0x4a, 0xb1, 0xe0, 0x57, 0xa9, 0xb8, 0x38, 0x8e, 0x1b, 0x16, 0x0a, 0xa5, 0x9f, 0xc4, + 0xff, 0xcf, 0xad, 0x67, 0x95, 0xbf, 0x00, 0x63, 0x72, 0x9e, 0xb4, 0x74, 0xe3, 0xad, 0xa6, 0x00, + 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, }; const BITMAP_OPAQUE image_xpm[1] = {{ png, sizeof( png ), "image_xpm" }}; diff --git a/bitmaps_png/cpp_48/icon_bitmap2component.cpp b/bitmaps_png/cpp_48/icon_bitmap2component.cpp index 345efcbb2c..6d3a8a8313 100644 --- a/bitmaps_png/cpp_48/icon_bitmap2component.cpp +++ b/bitmaps_png/cpp_48/icon_bitmap2component.cpp @@ -8,210 +8,214 @@ 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, 0x0c, 0x98, 0x49, 0x44, 0x41, 0x54, 0x68, 0xde, 0xd5, 0x9a, 0x6b, 0x6c, 0x5c, - 0xc7, 0x75, 0xc7, 0x7f, 0x77, 0xef, 0x63, 0xdf, 0x4b, 0xed, 0x2e, 0xa9, 0x15, 0x1f, 0xcb, 0x87, - 0x62, 0x29, 0x92, 0x4c, 0xc5, 0x26, 0x65, 0xc9, 0x90, 0x95, 0x38, 0x0d, 0xda, 0x3a, 0xb2, 0x95, - 0x34, 0x75, 0x04, 0x18, 0x30, 0x10, 0x14, 0x95, 0xeb, 0xc0, 0x71, 0x9b, 0xa6, 0x40, 0x8a, 0x02, - 0x4d, 0xdb, 0xcf, 0x05, 0x0a, 0xb4, 0xf9, 0xe2, 0x6f, 0xfd, 0x58, 0x58, 0x40, 0x5d, 0xb7, 0x0e, - 0xe2, 0x20, 0x71, 0x10, 0xdb, 0x42, 0x92, 0xca, 0xb2, 0x25, 0xdb, 0xb2, 0x24, 0x8a, 0x54, 0x25, - 0xc6, 0x7c, 0x89, 0xa4, 0x96, 0x2f, 0x91, 0xfb, 0xde, 0xfb, 0x98, 0x3b, 0xfd, 0xb0, 0x0f, 0x2d, - 0xf7, 0xc1, 0x87, 0x3e, 0x14, 0xe8, 0x2c, 0x06, 0x33, 0x77, 0x66, 0x76, 0x70, 0xfe, 0x73, 0xce, - 0xf9, 0x9f, 0x33, 0x77, 0x57, 0x91, 0x52, 0xf2, 0xff, 0xb9, 0x68, 0xed, 0x26, 0x5e, 0x78, 0xe1, - 0x85, 0x90, 0xa6, 0x69, 0x6f, 0xed, 0xd9, 0xb3, 0xe7, 0xb8, 0xa6, 0x69, 0x8a, 0xc7, 0xe3, 0xa1, - 0xbe, 0x2a, 0x8a, 0x82, 0xaa, 0xaa, 0x28, 0x8a, 0x52, 0x1b, 0x6b, 0x7c, 0xae, 0x5f, 0xbb, 0xd5, - 0x9a, 0xea, 0x73, 0xb5, 0xad, 0xae, 0x69, 0x55, 0x8b, 0xc5, 0xe2, 0x74, 0xb1, 0x58, 0x3c, 0xfb, - 0xea, 0xab, 0xaf, 0x4e, 0x6d, 0x09, 0xa0, 0x50, 0x28, 0x9c, 0x7d, 0xf1, 0xc5, 0x17, 0xbf, 0x7a, - 0xf6, 0xec, 0x59, 0x43, 0x08, 0x51, 0x1b, 0x57, 0x14, 0xa5, 0xe5, 0xfa, 0x76, 0xe3, 0x0f, 0xbb, - 0xae, 0xb1, 0x48, 0x29, 0x51, 0x55, 0x95, 0x7b, 0xf7, 0xee, 0x3d, 0x7e, 0xe1, 0xc2, 0x85, 0x1f, - 0x01, 0xdf, 0xdd, 0x12, 0x00, 0x10, 0x4d, 0x24, 0x12, 0x86, 0x6d, 0xdb, 0x14, 0x0a, 0x85, 0x2d, - 0x37, 0x17, 0x42, 0x60, 0x59, 0x16, 0x7e, 0xbf, 0x9f, 0x46, 0x93, 0xac, 0x7f, 0x6e, 0xd5, 0xdf, - 0x4d, 0xeb, 0xf3, 0xf9, 0xf0, 0xfb, 0xfd, 0x68, 0x9a, 0x96, 0xa8, 0xee, 0xe3, 0xd9, 0xe9, 0xa9, - 0x6d, 0x55, 0xd7, 0xd6, 0xd6, 0x98, 0x9e, 0x9e, 0x6e, 0x5a, 0x5b, 0xff, 0xdc, 0xaa, 0xbf, 0xdb, - 0xb6, 0xda, 0x57, 0x55, 0x75, 0x7b, 0x1f, 0xd8, 0x8d, 0xea, 0xa5, 0x94, 0x48, 0x29, 0x6b, 0x6b, - 0x1c, 0xc7, 0xe1, 0xda, 0xb5, 0x6b, 0x58, 0x96, 0xc5, 0xc9, 0x93, 0x27, 0x9b, 0xd6, 0xb6, 0xda, - 0x6b, 0x7c, 0x7c, 0x1c, 0x45, 0x51, 0xe8, 0xe9, 0xe9, 0x21, 0x12, 0x89, 0xd4, 0xd6, 0x35, 0xb6, - 0xf5, 0x40, 0xb6, 0xd5, 0x40, 0xe3, 0x29, 0xb4, 0xd2, 0x46, 0xab, 0xb1, 0xc9, 0xc9, 0x49, 0x46, - 0x46, 0x46, 0xf0, 0x7a, 0xbd, 0x6d, 0xd7, 0x34, 0xee, 0x6f, 0x59, 0x16, 0xc9, 0x64, 0x92, 0x99, - 0x99, 0x99, 0x2d, 0x35, 0xd5, 0x58, 0x3c, 0xbb, 0x35, 0x9f, 0x76, 0xf3, 0xf5, 0xfd, 0x83, 0x07, - 0x0f, 0xf2, 0xfe, 0xfb, 0xef, 0x63, 0x18, 0xc6, 0x8e, 0x4d, 0xc7, 0x30, 0x0c, 0xae, 0x5c, 0xb9, - 0xc2, 0xd1, 0xa3, 0x47, 0xdb, 0x7e, 0xa7, 0x95, 0x2f, 0x69, 0xbb, 0xd5, 0xc0, 0x76, 0x20, 0xa5, - 0x94, 0xe8, 0xba, 0xce, 0xe9, 0xd3, 0xa7, 0x9b, 0x9c, 0xb0, 0xd5, 0x3e, 0xd5, 0xf1, 0xe1, 0xe1, - 0x61, 0x86, 0x87, 0x87, 0x9b, 0x9c, 0xb7, 0xde, 0x7c, 0xaa, 0xc5, 0x75, 0xdd, 0x9d, 0xfb, 0x40, - 0xe3, 0xc9, 0x4f, 0x4c, 0x4c, 0xb0, 0xb1, 0xb1, 0x51, 0xa5, 0x5a, 0x54, 0x55, 0x45, 0xd7, 0x75, - 0x84, 0x10, 0x5c, 0xbc, 0x78, 0x91, 0x42, 0xa1, 0x40, 0x38, 0x1c, 0xae, 0x39, 0xdb, 0xe8, 0xe8, - 0xe8, 0x26, 0xa7, 0x6b, 0xb4, 0xe9, 0x56, 0x60, 0xea, 0xe7, 0xea, 0xc7, 0xea, 0x59, 0x6f, 0x47, - 0x00, 0xa4, 0x94, 0xd8, 0xb6, 0xcd, 0xfc, 0xfc, 0x3c, 0xc9, 0x64, 0x12, 0x80, 0xa1, 0xa1, 0x21, - 0x4c, 0xd3, 0xc4, 0x34, 0x4d, 0x26, 0x26, 0x26, 0x38, 0x78, 0xf0, 0x20, 0xc1, 0x60, 0xb0, 0xb6, - 0xf1, 0xf8, 0xf8, 0x38, 0x89, 0x44, 0x82, 0x68, 0x34, 0x8a, 0xaa, 0xaa, 0x68, 0x9a, 0xd6, 0xd6, - 0x21, 0x77, 0x22, 0x70, 0xab, 0x7e, 0xbd, 0x06, 0xb6, 0x75, 0xe2, 0x5c, 0x2e, 0xc7, 0xec, 0xec, - 0x6c, 0x4d, 0x13, 0xc1, 0x60, 0x90, 0x58, 0x2c, 0x46, 0x36, 0x9b, 0xa5, 0xab, 0xab, 0x8b, 0x64, - 0x32, 0x49, 0x2c, 0x16, 0x23, 0x1a, 0x8d, 0xd2, 0xd9, 0xd9, 0xc9, 0xd0, 0xd0, 0x10, 0xeb, 0xeb, - 0xeb, 0xc4, 0x62, 0x31, 0x3a, 0x3a, 0x3a, 0x76, 0x45, 0x95, 0xed, 0x68, 0xb3, 0xd1, 0x0a, 0x76, - 0x0c, 0xa0, 0xd5, 0x86, 0x8a, 0xa2, 0x70, 0xf5, 0xea, 0x55, 0xe6, 0xe7, 0xe7, 0x19, 0x18, 0x18, - 0x68, 0x9a, 0xef, 0xed, 0xed, 0xc5, 0xb6, 0x6d, 0x56, 0x57, 0x57, 0xb7, 0x8d, 0x1f, 0x5b, 0x09, - 0xdc, 0x8a, 0xbe, 0xab, 0xfd, 0x7a, 0x13, 0xf2, 0xec, 0x86, 0xfb, 0xab, 0xcf, 0x2b, 0x2b, 0x2b, - 0x14, 0x8b, 0x45, 0x0a, 0x85, 0x42, 0x93, 0x50, 0x9a, 0xa6, 0xd1, 0xdb, 0xdb, 0xcb, 0xdc, 0xdc, - 0xdc, 0xae, 0x4e, 0x7b, 0x2b, 0x81, 0xeb, 0xfb, 0x52, 0xca, 0x9d, 0xfb, 0x40, 0x2b, 0x47, 0xce, - 0xe7, 0xf3, 0x98, 0xa6, 0xc9, 0xc0, 0xc0, 0x00, 0xbd, 0xbd, 0xbd, 0x2d, 0x81, 0xf6, 0xf5, 0xf5, - 0x31, 0x3f, 0x3f, 0xcf, 0xda, 0xda, 0x1a, 0xf1, 0x78, 0xbc, 0xc9, 0xde, 0x4d, 0xd3, 0x64, 0x7e, - 0x7e, 0xbe, 0x89, 0x71, 0xea, 0x73, 0x9e, 0xaa, 0xcf, 0x35, 0xfa, 0xc1, 0xae, 0x59, 0xa8, 0x1a, - 0x59, 0xd3, 0xe9, 0x34, 0x00, 0x9f, 0x7f, 0xfe, 0x39, 0x91, 0x48, 0x84, 0xd1, 0xd1, 0xd1, 0xb6, - 0x94, 0x68, 0x18, 0x06, 0x3d, 0x3d, 0x3d, 0x4c, 0x4d, 0x4d, 0xd5, 0x9c, 0xb8, 0xbe, 0x2c, 0x2c, - 0x2c, 0x90, 0xc9, 0x64, 0x88, 0x46, 0xa3, 0x4d, 0xc2, 0x4b, 0x29, 0x49, 0xa5, 0x52, 0xe8, 0xba, - 0x4e, 0x20, 0x10, 0x00, 0x20, 0x18, 0x0c, 0x3e, 0x3c, 0x8d, 0xea, 0xba, 0x8e, 0x69, 0x9a, 0x5c, - 0xbf, 0x7e, 0x1d, 0x80, 0x5c, 0x2e, 0xc7, 0xc8, 0xc8, 0x48, 0x5b, 0x0a, 0xac, 0xf6, 0xfb, 0xfb, - 0xfb, 0xb9, 0x73, 0xe7, 0x0e, 0x63, 0x63, 0x63, 0x35, 0xca, 0xd5, 0x75, 0x1d, 0x5d, 0xd7, 0x29, - 0x16, 0x8b, 0x84, 0x42, 0x21, 0x0e, 0x1c, 0x38, 0xb0, 0x49, 0xf0, 0x6a, 0x7f, 0x6e, 0x6e, 0x8e, - 0xe9, 0xe9, 0x69, 0x34, 0xad, 0x2c, 0xde, 0xfe, 0xfd, 0xfb, 0x89, 0xc5, 0x62, 0x0f, 0x67, 0x42, - 0xe1, 0x70, 0x98, 0x33, 0x67, 0xce, 0xec, 0x38, 0x0d, 0xae, 0xd7, 0xc2, 0x73, 0xcf, 0x3d, 0x57, - 0x13, 0xec, 0xe6, 0xcd, 0x9b, 0x24, 0x12, 0x09, 0xe2, 0xf1, 0x38, 0x73, 0x73, 0x73, 0xcc, 0xcd, - 0xcd, 0x71, 0xe5, 0xca, 0x95, 0x26, 0x13, 0x02, 0x08, 0x04, 0x02, 0x0c, 0x0f, 0x0f, 0x13, 0x0c, - 0x06, 0xdb, 0x9a, 0xd9, 0xae, 0x7d, 0x60, 0xab, 0x88, 0xdc, 0x18, 0x94, 0x5a, 0xf1, 0x7c, 0xa3, - 0x8f, 0x84, 0x42, 0xa1, 0xa6, 0x93, 0xaf, 0xf7, 0x81, 0xea, 0x7c, 0xbb, 0xf4, 0xfd, 0xa1, 0x52, - 0x89, 0xed, 0xb4, 0xb0, 0x5d, 0x04, 0xad, 0x51, 0x9f, 0xc7, 0x53, 0xb3, 0xff, 0x7a, 0xc1, 0x5b, - 0xf5, 0x1b, 0xf7, 0x68, 0x34, 0x21, 0xcf, 0x6e, 0x4f, 0x7f, 0x3b, 0x2e, 0xdf, 0x29, 0x1d, 0xee, - 0x24, 0x4d, 0x6f, 0xb7, 0xb6, 0x1e, 0xd0, 0xae, 0x2f, 0x34, 0x3b, 0xc9, 0x2e, 0x1f, 0x56, 0xf8, - 0x9d, 0x68, 0xb8, 0xa5, 0x13, 0x9f, 0x3b, 0x77, 0xce, 0x97, 0xce, 0x15, 0xcf, 0x0a, 0xc4, 0x77, - 0x90, 0x4a, 0x18, 0x40, 0xf5, 0xfa, 0x7a, 0xde, 0xf8, 0xaf, 0xb7, 0xf8, 0xc5, 0xaf, 0xde, 0x45, - 0xd3, 0x75, 0x86, 0xfa, 0x93, 0x04, 0x02, 0x41, 0x24, 0x92, 0x7c, 0xa1, 0xc0, 0xcc, 0xcc, 0xec, - 0xa6, 0x8d, 0xda, 0xa5, 0xbb, 0xd5, 0x92, 0xcf, 0xe7, 0x31, 0x0c, 0xa3, 0xc6, 0x2c, 0xed, 0xd7, - 0x4b, 0x06, 0x07, 0x06, 0xf9, 0xca, 0xa9, 0xa7, 0xd8, 0x97, 0x48, 0xb4, 0x04, 0xd7, 0x04, 0xa0, - 0x24, 0xdc, 0xf3, 0xaa, 0xa1, 0x9e, 0x76, 0x2d, 0x37, 0x00, 0x12, 0x14, 0x40, 0x51, 0xb8, 0x97, - 0x4a, 0x71, 0x77, 0x7e, 0x9e, 0x2f, 0x3f, 0xf5, 0x14, 0x03, 0xc9, 0x64, 0xed, 0x6e, 0xbc, 0xaf, - 0xab, 0x8b, 0xe9, 0xa9, 0x69, 0xfe, 0xe7, 0xf6, 0x1d, 0x54, 0x75, 0x47, 0x4a, 0xdc, 0x24, 0x60, - 0x7d, 0xf3, 0xa0, 0xfb, 0x60, 0x7c, 0x66, 0x76, 0x8e, 0xcf, 0xae, 0x5d, 0xe3, 0x87, 0x3f, 0xf8, - 0x4b, 0xe2, 0xf1, 0x78, 0x13, 0xd8, 0x4d, 0x00, 0x5e, 0x7a, 0xe9, 0xa5, 0x2e, 0xbf, 0xdf, 0xff, - 0x87, 0x1e, 0x85, 0x80, 0xdf, 0xe7, 0x43, 0xd3, 0x34, 0x94, 0x32, 0x64, 0x14, 0x40, 0xd5, 0x75, - 0xae, 0xdd, 0xb8, 0xc1, 0xe7, 0xd3, 0xd3, 0x18, 0xba, 0x86, 0x61, 0x78, 0x49, 0x67, 0x32, 0x98, - 0x96, 0xc9, 0x91, 0x43, 0x07, 0xeb, 0x36, 0x53, 0x5a, 0x0a, 0x5b, 0xef, 0x84, 0xe5, 0xa6, 0x1e, - 0x80, 0xac, 0x8d, 0xc9, 0xca, 0x02, 0x09, 0x14, 0x8b, 0x45, 0x84, 0x70, 0xf9, 0xcd, 0xc5, 0x0f, - 0xf8, 0xf6, 0xb7, 0xfe, 0x68, 0x4b, 0x8d, 0x69, 0xde, 0x8e, 0x8e, 0xa0, 0xe2, 0xba, 0xce, 0xf7, - 0x5f, 0xf9, 0x1e, 0x03, 0x03, 0x03, 0x6d, 0xce, 0x4c, 0x92, 0xcd, 0x66, 0x99, 0xbb, 0x7b, 0x97, - 0x70, 0x38, 0x4c, 0x67, 0x3c, 0x46, 0x30, 0x10, 0xdc, 0xf2, 0x9c, 0xf3, 0xf9, 0x3c, 0x63, 0x37, - 0xaf, 0xe3, 0xd8, 0x36, 0x1d, 0xd1, 0x18, 0x87, 0xbe, 0x78, 0x08, 0x4d, 0xd5, 0x36, 0x45, 0x77, - 0xc7, 0xb1, 0x1b, 0xc0, 0x81, 0xc7, 0x53, 0xf6, 0xa1, 0x37, 0xdf, 0xfa, 0x09, 0xa6, 0x69, 0x6e, - 0x4f, 0xa3, 0x3e, 0x9f, 0x8f, 0xfe, 0xde, 0x5e, 0xad, 0xaf, 0xaf, 0x87, 0x62, 0x31, 0xd7, 0x1e, - 0xa9, 0xaa, 0xb0, 0x7f, 0xb0, 0xbf, 0x06, 0x29, 0x9f, 0xcf, 0x35, 0x6d, 0xbc, 0x91, 0x4e, 0x13, - 0x09, 0x87, 0xb1, 0x6d, 0x9b, 0x4b, 0x1f, 0x7e, 0xc0, 0x4f, 0x7e, 0xf6, 0x73, 0xae, 0xdf, 0xb8, - 0xc9, 0xf3, 0xdf, 0xfa, 0x26, 0x1e, 0x20, 0x16, 0x8b, 0x03, 0x12, 0xd7, 0x95, 0x80, 0x82, 0xcf, - 0xe7, 0xc5, 0x75, 0x5d, 0x5c, 0xd7, 0x45, 0x88, 0x72, 0x5b, 0xbd, 0x24, 0x9d, 0x38, 0x7e, 0x8c, - 0x4b, 0x1f, 0x5d, 0x69, 0x79, 0xfa, 0x4d, 0x00, 0x0c, 0xdd, 0x50, 0x4c, 0xcb, 0x6a, 0x89, 0xb8, - 0xd1, 0x21, 0x95, 0x36, 0xf3, 0x1f, 0x5d, 0xb9, 0xcc, 0x9b, 0x6f, 0xfd, 0x94, 0xa7, 0x4f, 0x3d, - 0xc5, 0x89, 0x27, 0x9e, 0x40, 0x37, 0x0c, 0xd2, 0xe9, 0x0c, 0x89, 0xbd, 0x09, 0xf2, 0xf9, 0x02, - 0xb6, 0xe3, 0xa0, 0xaa, 0x2a, 0x5e, 0xaf, 0x17, 0x21, 0x1c, 0x50, 0x1c, 0x84, 0xcc, 0x23, 0x3d, - 0x12, 0x14, 0x89, 0xc7, 0x23, 0xc1, 0x95, 0x04, 0x42, 0x0a, 0xae, 0xa3, 0x62, 0xe6, 0x2d, 0xb4, - 0x86, 0x9b, 0x5c, 0x6b, 0x0d, 0x78, 0xbd, 0x68, 0xaa, 0x2a, 0x1d, 0xdb, 0xc2, 0xaa, 0x00, 0x90, - 0x5b, 0xd0, 0x58, 0xbb, 0x62, 0x9a, 0x16, 0x85, 0x42, 0x91, 0x68, 0x2c, 0xc6, 0x9e, 0x3d, 0x1d, - 0x2c, 0x2d, 0xa7, 0xf8, 0xe1, 0x0f, 0xbe, 0xcf, 0xfd, 0x8d, 0x34, 0x43, 0x03, 0x03, 0xac, 0xac, - 0x2e, 0x31, 0x3b, 0x3b, 0x8d, 0x70, 0x5d, 0x92, 0xbd, 0x49, 0x0e, 0x1f, 0x3e, 0xc4, 0xfd, 0xfb, - 0x26, 0x8e, 0x23, 0xd8, 0xb3, 0xa7, 0xa3, 0xc6, 0x32, 0xae, 0xeb, 0x62, 0x7b, 0x1c, 0x9c, 0x4c, - 0xb6, 0x25, 0x63, 0x35, 0xfb, 0x80, 0xcf, 0x87, 0xaa, 0xa9, 0x98, 0x96, 0x4d, 0xc9, 0xb4, 0x76, - 0x24, 0x6c, 0xe3, 0xbc, 0x6d, 0xdb, 0x78, 0x75, 0x2f, 0xff, 0xf2, 0x4f, 0xff, 0x48, 0x7a, 0x63, - 0x83, 0xc5, 0x7b, 0x8b, 0x3c, 0xf6, 0xa5, 0xc7, 0xb9, 0x75, 0xfb, 0x16, 0x66, 0xa1, 0xc0, 0x1b, - 0xff, 0xfe, 0x06, 0x81, 0x50, 0x90, 0xfd, 0x43, 0x43, 0x1c, 0x1b, 0x2d, 0x27, 0x82, 0x9f, 0x5e, - 0xfd, 0x8c, 0x2f, 0xec, 0xff, 0x02, 0xd9, 0x6c, 0x96, 0xd9, 0xd9, 0x59, 0x06, 0x07, 0x07, 0x6b, - 0xfe, 0xa6, 0xaa, 0x2a, 0x8e, 0x6d, 0x37, 0x01, 0x68, 0x1d, 0x07, 0x4a, 0x25, 0x84, 0xe3, 0x60, - 0xdb, 0x16, 0xa6, 0x59, 0xda, 0xf5, 0xc9, 0x03, 0xdc, 0xbe, 0x7d, 0x87, 0xa1, 0xc1, 0x41, 0x8a, - 0xc5, 0xf2, 0x85, 0x3e, 0x5f, 0xc8, 0xf3, 0xcf, 0x3f, 0xfe, 0x31, 0x99, 0x6c, 0x86, 0x80, 0xcf, - 0x8f, 0x6e, 0xe8, 0xa4, 0xd3, 0x19, 0x2e, 0x5f, 0xbe, 0xcc, 0x7b, 0xef, 0xbd, 0xcf, 0x93, 0x4f, - 0x1e, 0xe7, 0xe9, 0xa7, 0x9f, 0xa6, 0x58, 0x2a, 0xd0, 0xd3, 0xdb, 0xcb, 0xc2, 0xe2, 0x22, 0xf7, - 0xee, 0xa5, 0x88, 0xc6, 0xa2, 0xb5, 0x97, 0x01, 0x8e, 0x23, 0xd0, 0x34, 0x8d, 0x68, 0x34, 0xba, - 0x49, 0x86, 0xd5, 0xd5, 0x55, 0x1c, 0xc7, 0xa9, 0x21, 0xd0, 0x4c, 0x40, 0x38, 0x0e, 0x96, 0x65, - 0x61, 0x59, 0xd6, 0x0e, 0x4e, 0x7e, 0xf3, 0xf3, 0x52, 0x6a, 0x09, 0x55, 0x55, 0xe9, 0xee, 0xee, - 0x66, 0x61, 0x71, 0x9e, 0x54, 0x2a, 0xc5, 0xdb, 0x6f, 0xff, 0x8c, 0x64, 0xb2, 0x9f, 0x7d, 0xdd, - 0x09, 0x84, 0x23, 0xb0, 0x1d, 0x1b, 0x29, 0x41, 0x55, 0xa3, 0x1c, 0x8a, 0x74, 0x90, 0x5a, 0x5a, - 0xe6, 0x3f, 0xde, 0x7c, 0x93, 0x67, 0x9e, 0xf9, 0x7d, 0xe2, 0xb1, 0x4e, 0x46, 0x47, 0x46, 0x79, - 0xf7, 0xdd, 0x5f, 0x71, 0xc8, 0x38, 0x84, 0xae, 0xeb, 0xa8, 0xaa, 0x86, 0xed, 0xd8, 0x4c, 0x4e, - 0x4e, 0xda, 0xaf, 0xbd, 0xf6, 0x5a, 0xb6, 0xfe, 0x20, 0xe7, 0xe6, 0xe6, 0xb4, 0x62, 0xb1, 0xf8, - 0x6f, 0x0f, 0x34, 0x60, 0x9a, 0xd8, 0x42, 0x60, 0x9a, 0x16, 0xa5, 0x92, 0xd9, 0x24, 0x6c, 0x24, - 0x1c, 0xc6, 0xf0, 0x7a, 0x59, 0x5b, 0x5b, 0x6b, 0x4e, 0xb2, 0x90, 0xcc, 0x2f, 0x2c, 0xf0, 0xb5, - 0xaf, 0xfd, 0x1e, 0x6b, 0x6b, 0x6b, 0xdc, 0xbf, 0xbf, 0xca, 0x87, 0x97, 0x3f, 0xe1, 0xd4, 0xa9, - 0x53, 0xac, 0xac, 0xae, 0xf0, 0xd9, 0xb5, 0x1b, 0xa4, 0x52, 0xcb, 0xac, 0x67, 0x32, 0x78, 0xbd, - 0x3a, 0x1d, 0xe1, 0x08, 0xfd, 0x7d, 0xbd, 0x9c, 0x38, 0x71, 0x02, 0xcb, 0x34, 0xb9, 0x73, 0x67, - 0x92, 0x6c, 0x36, 0xcb, 0xb1, 0xd1, 0x13, 0xec, 0x4d, 0x24, 0x58, 0x59, 0x59, 0x25, 0x16, 0x8f, - 0xa3, 0x6b, 0x02, 0xdb, 0x76, 0x28, 0x14, 0x8b, 0x1f, 0x4f, 0x4d, 0x4e, 0xfe, 0x7d, 0xbd, 0x4c, - 0xae, 0xeb, 0x4e, 0x9f, 0x3f, 0x7f, 0x7e, 0xb6, 0x06, 0xa0, 0x54, 0xf7, 0x76, 0xb9, 0x25, 0xef, - 0x2a, 0x21, 0xc0, 0xc5, 0xb2, 0x2d, 0x84, 0x10, 0xac, 0xaf, 0xdf, 0x47, 0xd3, 0x75, 0x22, 0xe1, - 0x08, 0x00, 0xa5, 0x52, 0x91, 0x9e, 0x9e, 0x6e, 0x7e, 0xf9, 0xcb, 0x5f, 0x50, 0x2c, 0x9a, 0x3c, - 0x71, 0x6c, 0x94, 0xe5, 0xd4, 0x32, 0x97, 0x3e, 0xfa, 0x98, 0xe8, 0x9e, 0x3d, 0x7c, 0xe3, 0x1b, - 0xcf, 0x12, 0x8f, 0xc5, 0xc9, 0x66, 0x33, 0x2c, 0xa6, 0x96, 0xf9, 0xe4, 0x93, 0x4f, 0x71, 0xc4, - 0x87, 0x9c, 0x7d, 0xfe, 0x8f, 0x19, 0x9f, 0x98, 0xc0, 0x2c, 0x59, 0xac, 0x2c, 0x2f, 0xd3, 0xd5, - 0xd9, 0xc5, 0xc4, 0xad, 0x5b, 0x04, 0x43, 0x61, 0x84, 0xd0, 0xb0, 0x6d, 0x1b, 0xdb, 0xb6, 0xf3, - 0xaf, 0xbf, 0xfe, 0xfa, 0xed, 0x0a, 0xaf, 0x08, 0xa0, 0x04, 0x98, 0xe7, 0xcf, 0x9f, 0xdf, 0x9c, - 0xcc, 0x39, 0xc2, 0x41, 0xb8, 0x62, 0x53, 0x75, 0x44, 0xb9, 0x96, 0x79, 0xba, 0xec, 0x38, 0xae, - 0x70, 0x11, 0xb6, 0xc0, 0xb1, 0x1d, 0x5c, 0xe1, 0x92, 0x49, 0x67, 0x08, 0x06, 0x43, 0x6c, 0x6c, - 0x6c, 0x90, 0xcb, 0xe7, 0xd1, 0x34, 0x8d, 0x78, 0x34, 0xc6, 0xcd, 0x5b, 0x13, 0x3c, 0x77, 0xfa, - 0xeb, 0xbc, 0xfc, 0x67, 0x7f, 0xca, 0xdc, 0xdd, 0x05, 0xde, 0xf8, 0xcf, 0xb7, 0xf8, 0xed, 0x07, - 0x1f, 0xe2, 0xf3, 0xea, 0xbc, 0xfa, 0xca, 0x39, 0x0c, 0xaf, 0x8f, 0x6b, 0xd7, 0x6f, 0xf0, 0xe4, - 0xf1, 0xe3, 0x38, 0x8e, 0xc3, 0xdd, 0xf9, 0x59, 0x7a, 0x7b, 0x7b, 0xc8, 0xe5, 0x73, 0x15, 0x59, - 0xcb, 0xef, 0x7e, 0x8a, 0xa5, 0x92, 0x1f, 0xe8, 0x06, 0xfa, 0x2b, 0x6d, 0x02, 0xe8, 0x54, 0x14, - 0xa5, 0x43, 0x51, 0x14, 0xad, 0xe6, 0xc4, 0x6e, 0x20, 0x80, 0x2b, 0x5c, 0xa4, 0x2b, 0xa1, 0x6d, - 0x46, 0x28, 0x71, 0x71, 0x71, 0x91, 0x78, 0xa4, 0xc4, 0x95, 0x2e, 0xc5, 0x52, 0x91, 0x8e, 0x48, - 0x84, 0x5c, 0x36, 0x87, 0xe3, 0xd8, 0x74, 0x27, 0xba, 0x59, 0x5d, 0x5d, 0xe5, 0xf0, 0xa1, 0x23, - 0xf4, 0xf5, 0xf5, 0xf2, 0xca, 0x9f, 0xff, 0x15, 0x46, 0x3a, 0x80, 0x8f, 0x18, 0x33, 0xda, 0x14, - 0x57, 0x3f, 0xf9, 0x8c, 0x43, 0x47, 0xbe, 0xc8, 0xcb, 0xe7, 0xbe, 0xc3, 0x85, 0x5f, 0x5f, 0xa4, - 0xa3, 0xa3, 0x83, 0x1b, 0x63, 0x63, 0x80, 0x24, 0x1a, 0x8d, 0xe2, 0xd8, 0x76, 0x19, 0x40, 0xc5, - 0x54, 0x5d, 0xdb, 0xf1, 0x54, 0xf2, 0x35, 0x0d, 0x50, 0x2b, 0xd5, 0x53, 0x57, 0xcb, 0x26, 0x14, - 0x74, 0x9c, 0x5a, 0x94, 0x92, 0x8d, 0x59, 0x56, 0x35, 0x7f, 0x29, 0xc7, 0x9b, 0x72, 0x9e, 0x57, - 0xa9, 0x7e, 0xbf, 0x9f, 0xd5, 0x95, 0x55, 0xbc, 0x5e, 0x1f, 0x8a, 0xa2, 0x10, 0x8d, 0x45, 0x99, - 0x9e, 0x9a, 0xe1, 0x89, 0x63, 0x23, 0xfc, 0xf5, 0xdf, 0xfe, 0x1d, 0x8f, 0xce, 0x9f, 0xe4, 0x11, - 0xeb, 0x08, 0x37, 0x83, 0x13, 0x94, 0x02, 0x12, 0x25, 0xa8, 0x33, 0x76, 0x63, 0x8c, 0x4b, 0x1f, - 0x7d, 0xcc, 0xd0, 0x40, 0x3f, 0xa6, 0x65, 0xd1, 0x97, 0xec, 0x25, 0x18, 0xf0, 0x93, 0xc9, 0x64, - 0x09, 0x85, 0x42, 0x20, 0xc1, 0x95, 0x2e, 0xc2, 0x75, 0x40, 0x53, 0x8b, 0x40, 0xaa, 0x9a, 0x7d, - 0x00, 0x66, 0xc5, 0x8c, 0x8a, 0x52, 0x4a, 0xf7, 0x01, 0x8d, 0x06, 0x43, 0xb8, 0x6e, 0x45, 0x03, - 0x2d, 0xf2, 0x20, 0x64, 0xf5, 0x54, 0x5c, 0xca, 0xdf, 0x2b, 0x23, 0x0b, 0xf8, 0x7d, 0xe4, 0x72, - 0x19, 0x22, 0x91, 0x30, 0x86, 0xae, 0xb3, 0xb4, 0x94, 0x22, 0x1e, 0x8f, 0xb1, 0xb0, 0xb8, 0x40, - 0x6e, 0xc5, 0xc4, 0xf4, 0xab, 0x8c, 0x29, 0xe3, 0xac, 0xc8, 0x65, 0xb2, 0xf6, 0x3a, 0x7e, 0x4d, - 0xb2, 0xaf, 0x7b, 0x1f, 0x37, 0xc6, 0x26, 0x18, 0x79, 0xec, 0x4b, 0x20, 0x25, 0x9a, 0xaa, 0xd1, - 0xd3, 0xd3, 0xcb, 0xd2, 0x52, 0x8a, 0x70, 0xb8, 0x72, 0x8d, 0x94, 0xe0, 0x0a, 0x89, 0xaa, 0xa8, - 0x45, 0xe0, 0xae, 0xdc, 0x82, 0x1a, 0x3d, 0x25, 0xc0, 0x71, 0x45, 0x59, 0x38, 0x5c, 0x64, 0xc3, - 0xa7, 0x5e, 0x11, 0x12, 0x70, 0x91, 0x08, 0x5c, 0x84, 0x74, 0x91, 0x52, 0xa2, 0x69, 0x3a, 0xe9, - 0x4c, 0x9a, 0xbe, 0xbe, 0x7e, 0x32, 0xd9, 0x34, 0xa1, 0x50, 0x98, 0x52, 0xc9, 0xc4, 0xf1, 0x08, - 0x66, 0x8d, 0x69, 0xa6, 0x8c, 0xdf, 0xb1, 0xac, 0x2d, 0x62, 0x6b, 0x59, 0x82, 0x7e, 0x0f, 0xfb, - 0x12, 0xdd, 0x08, 0xe1, 0xe0, 0xf7, 0xfb, 0xb1, 0x1d, 0x9b, 0xae, 0xce, 0x4e, 0x12, 0x7b, 0xbb, - 0x59, 0x5b, 0x5b, 0xc5, 0x1f, 0x08, 0xe0, 0x4a, 0x51, 0xae, 0xae, 0x40, 0xb8, 0x8e, 0x94, 0xdb, - 0xf0, 0xba, 0x87, 0x52, 0xa9, 0x96, 0x48, 0x49, 0x57, 0x22, 0x5d, 0x17, 0xe9, 0xba, 0xb8, 0xae, - 0xa8, 0xd5, 0x6a, 0xf4, 0x93, 0xae, 0xc4, 0xab, 0x1b, 0x78, 0x35, 0x2f, 0x52, 0x94, 0x93, 0xb2, - 0x78, 0x3c, 0xce, 0xc5, 0x8b, 0x17, 0x79, 0xfc, 0xb1, 0x51, 0x7c, 0x5e, 0x3f, 0xcb, 0xab, 0x4b, - 0x24, 0xf6, 0xed, 0xc5, 0x17, 0xd0, 0xb8, 0xef, 0xce, 0x60, 0x85, 0x37, 0x70, 0xbc, 0x69, 0x42, - 0x21, 0x85, 0x9e, 0xbe, 0x1e, 0x22, 0x91, 0x30, 0xc3, 0x8f, 0x1e, 0x46, 0xd7, 0x34, 0x3a, 0x22, - 0x1d, 0x24, 0x93, 0x03, 0xe4, 0xf3, 0x79, 0x96, 0x97, 0x57, 0xf1, 0xea, 0x5e, 0xa4, 0x00, 0x29, - 0x40, 0x08, 0x17, 0xa7, 0xcd, 0x85, 0xa9, 0x49, 0x03, 0xc2, 0xb2, 0xca, 0x6c, 0x23, 0x2b, 0xb5, - 0x06, 0x46, 0x92, 0x4e, 0x67, 0xd8, 0xd8, 0x48, 0xe3, 0x08, 0x1b, 0x57, 0x0a, 0xfc, 0x01, 0x3f, - 0x86, 0xa1, 0xd7, 0xcc, 0xa9, 0x23, 0x12, 0xc1, 0x32, 0x2d, 0xae, 0x5e, 0xfd, 0x94, 0xaf, 0x7c, - 0xf9, 0xab, 0x28, 0x28, 0xe4, 0xb2, 0x39, 0xbe, 0xfb, 0xf2, 0x9f, 0xe0, 0xf5, 0x4b, 0x6c, 0xb1, - 0x41, 0x24, 0x62, 0x10, 0x8a, 0x84, 0xd9, 0xd8, 0xd8, 0x60, 0x79, 0x65, 0x95, 0x67, 0x4f, 0xff, - 0x01, 0x7b, 0xbb, 0x12, 0xec, 0xdb, 0xd7, 0x8d, 0xcf, 0xe7, 0xe3, 0xea, 0xd5, 0x4f, 0x09, 0x47, - 0x42, 0xb8, 0x65, 0xdd, 0xe2, 0x4a, 0x81, 0x70, 0x1d, 0x84, 0xbd, 0x3d, 0x00, 0x8d, 0x12, 0x38, - 0xae, 0x8b, 0x70, 0x1c, 0x44, 0x35, 0x42, 0xd7, 0x11, 0x51, 0x2e, 0x9f, 0x83, 0x6a, 0xea, 0x2c, - 0x1b, 0x7c, 0xa3, 0x12, 0xd0, 0xba, 0x12, 0x5d, 0x4c, 0xfe, 0x6e, 0x92, 0x40, 0x30, 0xc8, 0xd1, - 0xa3, 0x8f, 0x91, 0x4e, 0x6f, 0xa0, 0xaa, 0x0a, 0xff, 0xf0, 0xa3, 0xbf, 0xe1, 0xed, 0x9f, 0xbf, - 0xc3, 0xf4, 0xcc, 0x1c, 0x7e, 0xbf, 0x8f, 0xe1, 0x47, 0x8f, 0x70, 0xe6, 0xd9, 0x67, 0x88, 0x76, - 0x44, 0x39, 0x70, 0xe0, 0x20, 0xa6, 0x65, 0x32, 0x3e, 0x3e, 0x8e, 0x65, 0xd9, 0x78, 0x54, 0x4f, - 0x99, 0x09, 0x2b, 0xfb, 0x0a, 0x51, 0xa6, 0xf3, 0x6d, 0x01, 0x94, 0x28, 0x21, 0x44, 0x50, 0x8a, - 0x8a, 0x06, 0xca, 0xe1, 0x6e, 0xb3, 0xa0, 0x0a, 0xca, 0xb6, 0x49, 0x5d, 0x3c, 0x16, 0xe7, 0xe6, - 0xd8, 0x18, 0xcb, 0x4b, 0x29, 0x06, 0x87, 0x06, 0xd8, 0xdb, 0x95, 0xa0, 0xb3, 0x13, 0xfe, 0xe2, - 0x7b, 0x2f, 0x23, 0x5d, 0x89, 0xaa, 0xab, 0xf8, 0xbd, 0x01, 0x22, 0x91, 0x08, 0x5e, 0xc3, 0xcb, - 0xbd, 0xd4, 0x3d, 0xa6, 0xa7, 0xa6, 0x49, 0xa7, 0x37, 0x90, 0x6c, 0x4e, 0xd0, 0x90, 0x94, 0xe3, - 0x8d, 0xd8, 0x89, 0x06, 0x00, 0xdb, 0x11, 0x8a, 0xe3, 0xd8, 0x0f, 0x34, 0xb0, 0xe5, 0x55, 0xb6, - 0x7a, 0xf2, 0x9b, 0xa7, 0x55, 0xcd, 0x43, 0xbc, 0x33, 0x46, 0x36, 0x97, 0xe5, 0xfa, 0xf5, 0x31, - 0x3a, 0xe3, 0x71, 0x42, 0xe1, 0x30, 0x81, 0x80, 0x1f, 0x8f, 0xa1, 0xe0, 0x33, 0xfc, 0x18, 0x86, - 0x41, 0x3e, 0x97, 0x63, 0x29, 0xbf, 0xc4, 0xda, 0xda, 0x2a, 0xf9, 0x7c, 0xa1, 0xc2, 0x72, 0xcd, - 0x87, 0xe2, 0x08, 0xbb, 0x7c, 0x6f, 0xd8, 0x0e, 0x80, 0xe5, 0x38, 0x66, 0xa9, 0x58, 0x52, 0xca, - 0xbf, 0x7c, 0x88, 0x32, 0x85, 0xb1, 0xc3, 0xff, 0x4f, 0xc8, 0xe6, 0xdb, 0x83, 0x61, 0x18, 0xb8, - 0xae, 0xcb, 0xfa, 0xfa, 0x3a, 0xf7, 0xd7, 0xef, 0xa3, 0x69, 0x1a, 0xa1, 0x60, 0x18, 0x55, 0x55, - 0x91, 0xb2, 0x1c, 0xd9, 0xad, 0x72, 0x9a, 0xd0, 0xfe, 0x57, 0x7f, 0x34, 0x0a, 0x85, 0x12, 0x42, - 0xc8, 0xdc, 0xb6, 0xaf, 0x7c, 0x00, 0xe3, 0xcc, 0xf3, 0xdf, 0xbe, 0x70, 0xe2, 0xd8, 0xc8, 0xc9, - 0x47, 0xf6, 0x0f, 0x7a, 0x14, 0xc5, 0xb3, 0xab, 0x94, 0xba, 0x46, 0xb5, 0x0d, 0x17, 0xf6, 0xaa, - 0x39, 0x6e, 0x7a, 0xdb, 0x56, 0x97, 0x25, 0xb6, 0x7c, 0x23, 0x57, 0xbd, 0x4f, 0x67, 0x0b, 0x5c, - 0x1f, 0x1b, 0x2b, 0xcc, 0x2f, 0x2e, 0x7e, 0xfd, 0xbd, 0x77, 0xde, 0xf9, 0x60, 0x2b, 0x2a, 0x55, - 0x80, 0xc8, 0x23, 0x8f, 0x1c, 0x4e, 0x26, 0xf7, 0x0f, 0xbc, 0xe2, 0xf5, 0x1a, 0xdf, 0x94, 0x28, - 0x81, 0x8a, 0xd9, 0x4b, 0xa4, 0x7c, 0xb8, 0x3f, 0x36, 0x3c, 0x4c, 0x51, 0x14, 0x59, 0x83, 0x27, - 0xc4, 0x9d, 0x5c, 0x36, 0xf7, 0xaf, 0x97, 0xfe, 0xfb, 0xd7, 0xef, 0x00, 0x79, 0x29, 0x65, 0x69, - 0x2b, 0x00, 0x0a, 0xe0, 0x07, 0x7c, 0x95, 0xaa, 0x57, 0x72, 0x0e, 0xea, 0xda, 0xff, 0x8b, 0x62, - 0x57, 0x64, 0xa9, 0x4f, 0x19, 0x0a, 0x52, 0xca, 0x2d, 0x1d, 0xe1, 0x7f, 0x01, 0x0c, 0xe6, 0x84, - 0xf7, 0x85, 0xc0, 0x86, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, - 0x82, + 0x87, 0x00, 0x00, 0x0c, 0xdb, 0x49, 0x44, 0x41, 0x54, 0x68, 0xde, 0xd5, 0x99, 0x7b, 0x6c, 0x54, + 0xd7, 0x9d, 0x80, 0xbf, 0xfb, 0xf0, 0xcc, 0xd8, 0x1e, 0x3f, 0xc6, 0x9e, 0xf1, 0x1b, 0x1b, 0x1c, + 0x8c, 0xbd, 0xa6, 0x36, 0x09, 0x09, 0x10, 0x36, 0xae, 0x4b, 0x29, 0xc1, 0x09, 0x50, 0x85, 0x87, + 0x01, 0xb5, 0x8e, 0x20, 0x51, 0xac, 0x88, 0x26, 0x80, 0xaa, 0xb6, 0xa4, 0x34, 0x8d, 0xd2, 0xa8, + 0x5d, 0x56, 0x95, 0x1a, 0xd4, 0x55, 0x68, 0x57, 0x9b, 0x84, 0x50, 0x20, 0x9b, 0x22, 0x2d, 0x54, + 0x21, 0x29, 0x24, 0x4d, 0xe4, 0x50, 0x20, 0x6e, 0x03, 0xd4, 0xa1, 0x6e, 0x30, 0x25, 0x25, 0x7e, + 0xe1, 0x07, 0x7e, 0x8e, 0x3d, 0xf6, 0xd8, 0x33, 0x9e, 0xc7, 0xbd, 0x67, 0xff, 0xb0, 0xe7, 0xe2, + 0xf1, 0x8c, 0x89, 0xcd, 0x2e, 0x2b, 0xed, 0x91, 0xae, 0xce, 0xb9, 0xe7, 0xde, 0x73, 0xce, 0xef, + 0xfd, 0x3a, 0x92, 0x10, 0x82, 0xff, 0xcf, 0x4d, 0x0d, 0x0d, 0xb6, 0x6d, 0xdb, 0xf6, 0xb4, 0xd9, + 0x6c, 0xce, 0x51, 0x55, 0x15, 0x59, 0x96, 0x51, 0x55, 0x95, 0xc9, 0xe3, 0xc9, 0xbd, 0xa2, 0x28, + 0xa8, 0xea, 0xf8, 0xd2, 0xe9, 0xfe, 0x99, 0xfc, 0x08, 0x21, 0x3a, 0x9e, 0x7c, 0xf2, 0xc9, 0xd7, + 0xee, 0x1a, 0x02, 0x4f, 0x3c, 0xf1, 0xc4, 0xee, 0x17, 0x5e, 0x78, 0xe1, 0xe5, 0xa4, 0xa4, 0xa4, + 0x18, 0x00, 0x49, 0x92, 0x98, 0xda, 0x0b, 0x21, 0x90, 0x24, 0x29, 0x6c, 0x3c, 0xb5, 0x45, 0x9b, + 0x13, 0x42, 0xa0, 0x69, 0x5a, 0xf0, 0xe8, 0xd1, 0xa3, 0xea, 0xb6, 0x6d, 0xdb, 0xfe, 0xfd, 0xae, + 0x20, 0x60, 0x32, 0x99, 0x8a, 0x6d, 0x36, 0x5b, 0x8c, 0xae, 0xeb, 0xc6, 0xa1, 0x00, 0xa3, 0x17, + 0x2f, 0x62, 0xca, 0xcd, 0x45, 0xcd, 0xc8, 0x08, 0x9b, 0x8f, 0xd6, 0x87, 0x9e, 0xa9, 0xef, 0x42, + 0x08, 0x6c, 0x36, 0x9b, 0x6a, 0x32, 0x99, 0x0a, 0xef, 0x06, 0x07, 0xe4, 0xa9, 0x14, 0x94, 0x24, + 0x09, 0x59, 0x96, 0xc1, 0xe3, 0xa1, 0xe3, 0xe9, 0xa7, 0x69, 0xdd, 0xb8, 0x11, 0xd7, 0xb1, 0x63, + 0x48, 0x93, 0x38, 0x30, 0xdb, 0x27, 0x24, 0x6a, 0x77, 0x15, 0x81, 0xc9, 0xc0, 0x4f, 0x16, 0x85, + 0xcc, 0xea, 0x6a, 0x06, 0x5e, 0x7d, 0x95, 0xb6, 0xed, 0xdb, 0x09, 0x34, 0x35, 0x85, 0xfd, 0x33, + 0x1d, 0xb0, 0x93, 0xf7, 0x9b, 0x2a, 0x8e, 0x77, 0x95, 0x03, 0x53, 0x01, 0x03, 0xb0, 0x6f, 0xd8, + 0xc0, 0xa2, 0x3f, 0xfe, 0x91, 0xb8, 0x79, 0xf3, 0x68, 0xdd, 0xba, 0x95, 0xfe, 0x5f, 0xfd, 0x0a, + 0x02, 0x81, 0x19, 0x51, 0x7d, 0x72, 0xd3, 0x34, 0xed, 0xff, 0x86, 0x03, 0xd1, 0x80, 0x88, 0x49, + 0x4d, 0xa5, 0xe0, 0xc0, 0x01, 0x0a, 0x0f, 0x1d, 0x62, 0xe4, 0xfd, 0xf7, 0x69, 0xad, 0xac, 0xc4, + 0x7b, 0xf9, 0x72, 0x18, 0x75, 0xbf, 0x0c, 0x99, 0x60, 0x30, 0x78, 0xf7, 0xcc, 0x68, 0x34, 0x36, + 0x47, 0xa3, 0x62, 0xf2, 0x8a, 0x15, 0x2c, 0xaa, 0xa9, 0xa1, 0x7d, 0xff, 0x7e, 0xda, 0xab, 0xab, + 0x49, 0xda, 0xb0, 0x01, 0xc7, 0x77, 0xbf, 0x8b, 0x64, 0xb5, 0x46, 0xfd, 0xbf, 0xab, 0xab, 0x8b, + 0x9a, 0x9a, 0x1a, 0x54, 0x55, 0xa5, 0xb7, 0xb7, 0x77, 0xe3, 0xc5, 0x8b, 0x17, 0x4b, 0x14, 0x45, + 0x31, 0xcc, 0xad, 0xa2, 0x28, 0x86, 0x49, 0x9e, 0x3c, 0x3f, 0xd5, 0x64, 0x87, 0xbe, 0x4d, 0x7e, + 0x00, 0xdd, 0xef, 0xf7, 0xbf, 0xa8, 0x4e, 0x06, 0x38, 0xd0, 0xd1, 0x41, 0xf7, 0xcb, 0x2f, 0x23, + 0x34, 0x0d, 0x31, 0x41, 0x31, 0x11, 0x0c, 0xd2, 0x7d, 0xf8, 0x30, 0x3d, 0x47, 0x8e, 0x18, 0x80, + 0x2d, 0x38, 0x78, 0x10, 0xfb, 0xfa, 0xf5, 0x34, 0xed, 0xd9, 0x43, 0xcb, 0x86, 0x0d, 0xa4, 0xed, + 0xdd, 0x8b, 0xf5, 0x1b, 0xdf, 0x88, 0x40, 0xa0, 0xa6, 0xa6, 0x86, 0x67, 0x9e, 0x79, 0x26, 0xf4, + 0x9a, 0x23, 0x49, 0x52, 0xce, 0x4c, 0xa8, 0x1a, 0x32, 0xd5, 0xd3, 0x35, 0x21, 0x04, 0xb2, 0x2c, + 0x53, 0x5b, 0x5b, 0x3b, 0x5f, 0x9d, 0x3c, 0xa9, 0x58, 0xad, 0xc4, 0x16, 0x15, 0x81, 0x10, 0xe8, + 0x3e, 0x1f, 0xee, 0x73, 0xe7, 0x40, 0x96, 0xb1, 0x6f, 0xdc, 0x88, 0x6d, 0xd5, 0x2a, 0x63, 0x03, + 0x53, 0x7a, 0x3a, 0x52, 0x4c, 0x0c, 0x25, 0xa7, 0x4e, 0xd1, 0xf5, 0xfa, 0xeb, 0x74, 0xfc, 0xf8, + 0xc7, 0xc4, 0x9f, 0x3e, 0x8d, 0x63, 0xef, 0x5e, 0x14, 0x87, 0xc3, 0xf8, 0x2f, 0x21, 0x21, 0x01, + 0x80, 0xb1, 0xb1, 0xb1, 0xdb, 0x02, 0x33, 0x75, 0x7c, 0x3b, 0x93, 0x1c, 0x9a, 0x8b, 0x8b, 0x8b, + 0x23, 0x29, 0x29, 0x49, 0x09, 0xe3, 0x40, 0x8c, 0xdd, 0x4e, 0xc6, 0xce, 0x9d, 0xe3, 0x4a, 0x37, + 0x3c, 0x4c, 0xef, 0x6b, 0xaf, 0x21, 0xc9, 0x32, 0x6a, 0x62, 0x22, 0x6a, 0x62, 0x62, 0x24, 0xa5, + 0x54, 0x95, 0xac, 0xef, 0x7c, 0x87, 0xd4, 0xb5, 0x6b, 0x69, 0xda, 0xbb, 0x97, 0xd6, 0x8d, 0x1b, + 0xb1, 0xef, 0xde, 0x4d, 0xe2, 0xa6, 0x4d, 0x11, 0xd6, 0x28, 0x5a, 0xab, 0xaf, 0xaf, 0xe7, 0xcc, + 0x99, 0x33, 0x51, 0xa9, 0x3d, 0xe1, 0x3f, 0xa8, 0xaa, 0xaa, 0x0a, 0x89, 0x4c, 0x04, 0xc2, 0x92, + 0x24, 0xa1, 0x4e, 0xe7, 0x49, 0x67, 0x63, 0xf6, 0xcc, 0xb9, 0xb9, 0x14, 0xff, 0xf6, 0xb7, 0x74, + 0xbd, 0xfe, 0x3a, 0x37, 0x7e, 0xf6, 0x33, 0xfa, 0x5f, 0x79, 0x05, 0xc9, 0x6c, 0x26, 0xb0, 0x6e, + 0x9d, 0xb1, 0x57, 0xc7, 0x48, 0x07, 0xdb, 0xdf, 0xdf, 0x8e, 0x2e, 0x74, 0x1e, 0xce, 0x7b, 0x98, + 0xe7, 0x97, 0x3d, 0xcf, 0xd1, 0xa3, 0x47, 0x71, 0x3a, 0x9d, 0xe4, 0xe6, 0xe6, 0xe2, 0x74, 0x3a, + 0x51, 0x55, 0x95, 0x60, 0x30, 0x88, 0xa2, 0x28, 0xc4, 0xc6, 0xc6, 0x72, 0xe6, 0xcc, 0x19, 0x96, + 0x2f, 0x5f, 0x0e, 0x0e, 0xd8, 0xf6, 0xc1, 0x36, 0x74, 0xa1, 0x53, 0x91, 0x5b, 0xc1, 0x8b, 0x4b, + 0x5f, 0xbc, 0xe5, 0x5f, 0xa2, 0x21, 0x20, 0x49, 0x12, 0x42, 0x0e, 0xb3, 0xb0, 0x8c, 0xd4, 0xd7, + 0xd3, 0xfe, 0x8b, 0x5f, 0xf0, 0x4f, 0x6f, 0xbd, 0x15, 0x15, 0x89, 0xfe, 0xb7, 0xdf, 0xa6, 0xf3, + 0xd7, 0xbf, 0x26, 0xb6, 0xa4, 0x84, 0xc4, 0x4d, 0x9b, 0x50, 0xec, 0x76, 0xd4, 0x96, 0x16, 0x83, + 0x03, 0xbd, 0x9e, 0x5e, 0xae, 0xf4, 0x5d, 0x01, 0x20, 0x3d, 0x2e, 0xdd, 0x38, 0x6b, 0xc9, 0x92, + 0x25, 0xec, 0xda, 0xb5, 0x8b, 0x43, 0x87, 0x0e, 0xe1, 0xf3, 0xf9, 0x70, 0xb9, 0x5c, 0x94, 0x94, + 0x94, 0xb0, 0x78, 0xf1, 0x62, 0x9e, 0x7a, 0xea, 0x29, 0x84, 0x10, 0x38, 0xbd, 0x4e, 0xda, 0xdd, + 0xed, 0x00, 0x34, 0x0d, 0x35, 0x19, 0x6b, 0x85, 0x10, 0x84, 0x89, 0x90, 0xf0, 0x7a, 0x71, 0x7d, + 0xf8, 0xe1, 0xb8, 0x12, 0x87, 0xe4, 0x56, 0x08, 0x9c, 0xef, 0xbe, 0x4b, 0xf7, 0x9b, 0x6f, 0xe2, + 0xbd, 0x7e, 0x9d, 0x7f, 0x54, 0x57, 0x33, 0xf7, 0x27, 0x3f, 0xc1, 0x3c, 0x67, 0x0e, 0x00, 0xbe, + 0x8e, 0x0e, 0x9a, 0x7f, 0xf4, 0x23, 0xdc, 0x75, 0x75, 0x38, 0x76, 0xef, 0x26, 0x79, 0xcb, 0x16, + 0x84, 0x24, 0xa1, 0xeb, 0x3a, 0x72, 0x77, 0xb7, 0xe1, 0x5f, 0x2c, 0xaa, 0xe5, 0x16, 0xc7, 0x54, + 0xb3, 0x21, 0x16, 0x21, 0x04, 0xcb, 0xca, 0xca, 0xf8, 0xe0, 0x83, 0x0f, 0xb0, 0x5a, 0xad, 0x2c, + 0x5e, 0xbc, 0x38, 0x8c, 0x98, 0xf1, 0x31, 0xf1, 0xc6, 0xda, 0xc9, 0x63, 0x5d, 0xd7, 0xc3, 0x39, + 0xe0, 0xbf, 0x79, 0x93, 0x9e, 0x43, 0x87, 0x40, 0x08, 0xc4, 0x84, 0xe3, 0xd1, 0xfd, 0x7e, 0xe2, + 0x4b, 0x4b, 0x49, 0xa9, 0xa8, 0xa0, 0x6f, 0x68, 0x88, 0xf4, 0xc7, 0x1f, 0x47, 0xb5, 0xd9, 0x10, + 0x9a, 0x46, 0xf7, 0x1b, 0x6f, 0xd0, 0xbe, 0x7f, 0x3f, 0xf1, 0x4b, 0x97, 0x92, 0x7f, 0xf2, 0x24, + 0x6a, 0x7a, 0xfa, 0xb8, 0x8c, 0x4e, 0x0a, 0xf6, 0x42, 0x00, 0x96, 0xa6, 0x95, 0x72, 0xe5, 0xc9, + 0x2b, 0x68, 0x42, 0x23, 0xc5, 0x92, 0x12, 0x21, 0xae, 0x45, 0x45, 0x45, 0x14, 0x16, 0x16, 0x1a, + 0xca, 0xda, 0xd3, 0xd3, 0x63, 0x7c, 0xbf, 0x37, 0xed, 0x5e, 0x3e, 0xdf, 0xfe, 0x39, 0xba, 0xd0, + 0xb1, 0x28, 0x16, 0x63, 0xcf, 0x08, 0x04, 0x62, 0x0b, 0x0a, 0x58, 0x78, 0xea, 0x14, 0x92, 0x24, + 0xa1, 0x0d, 0x0f, 0xf3, 0x69, 0x69, 0x29, 0xb2, 0xd9, 0x8c, 0x65, 0xee, 0x5c, 0x52, 0x1e, 0x7d, + 0x14, 0x49, 0x55, 0x49, 0x5e, 0xb1, 0x82, 0xd1, 0xab, 0x57, 0x69, 0xde, 0xb3, 0x07, 0x5f, 0x77, + 0x37, 0xd9, 0xfb, 0xf6, 0x91, 0x58, 0x51, 0x81, 0xae, 0xeb, 0xd3, 0x9a, 0x3e, 0x49, 0x92, 0xd0, + 0x84, 0xc6, 0x75, 0xd7, 0x75, 0x84, 0x10, 0xe4, 0x27, 0xe7, 0x93, 0x60, 0x4e, 0xf8, 0x52, 0x25, + 0x0f, 0xb5, 0xb1, 0xe0, 0x18, 0x67, 0x3b, 0xce, 0xa2, 0xe9, 0x1a, 0x85, 0xb6, 0x42, 0x16, 0x24, + 0x2f, 0x88, 0x2e, 0x42, 0xb7, 0x0b, 0x07, 0xcc, 0xd9, 0xd9, 0xa4, 0x6d, 0xdd, 0xca, 0x8d, 0x7d, + 0xfb, 0xe8, 0x3e, 0x78, 0x10, 0xdb, 0xfa, 0xf5, 0xe4, 0xbd, 0xf1, 0x06, 0x72, 0x42, 0x82, 0x11, + 0x5e, 0x47, 0x43, 0x20, 0xb4, 0xd7, 0xc5, 0xce, 0x8b, 0x6c, 0x7a, 0x7b, 0xdc, 0x3a, 0xad, 0x9a, + 0xbb, 0x8a, 0x13, 0xeb, 0x4f, 0x44, 0x0d, 0xd7, 0xa3, 0xe9, 0xe3, 0x85, 0xee, 0x0b, 0xec, 0xf8, + 0x68, 0x07, 0x00, 0x15, 0x79, 0x15, 0x1c, 0x5c, 0x75, 0xd0, 0x08, 0x4f, 0x66, 0x1c, 0x22, 0x0e, + 0x7d, 0xfc, 0x31, 0xcd, 0x7b, 0xf7, 0x82, 0x2c, 0x93, 0xff, 0x9b, 0xdf, 0x10, 0xbf, 0x74, 0x69, + 0x98, 0x6d, 0xbe, 0x9d, 0x53, 0x92, 0x24, 0x09, 0xa4, 0x70, 0x13, 0x19, 0x0d, 0x58, 0x31, 0x45, + 0xf4, 0x8c, 0x5e, 0x9a, 0xde, 0x87, 0x84, 0x39, 0xb2, 0x68, 0x4e, 0x25, 0x38, 0x30, 0x40, 0xe3, + 0x81, 0x03, 0x38, 0xdf, 0x79, 0x87, 0xb4, 0xea, 0x6a, 0xd2, 0x77, 0xee, 0x44, 0x32, 0x99, 0x22, + 0x00, 0x9f, 0x8e, 0xfa, 0xa1, 0x7e, 0xbe, 0x6d, 0x3e, 0x95, 0x45, 0x95, 0x08, 0x21, 0x28, 0x9f, + 0x53, 0x1e, 0xa1, 0x23, 0xb7, 0xdb, 0x67, 0x61, 0xea, 0x42, 0xb6, 0x17, 0x8f, 0x9b, 0xe0, 0x87, + 0xb2, 0x1e, 0x32, 0xd6, 0x44, 0x70, 0x20, 0x1a, 0x02, 0xd7, 0xaa, 0xaa, 0x88, 0x2d, 0x28, 0xa0, + 0xe8, 0xe4, 0x49, 0x2c, 0x45, 0x45, 0x51, 0x11, 0x9d, 0x09, 0x17, 0xb2, 0x12, 0xb2, 0x38, 0xbc, + 0xee, 0x70, 0x54, 0x20, 0x6f, 0x97, 0xdd, 0x49, 0x92, 0x44, 0x46, 0x7c, 0x06, 0x3f, 0xff, 0xea, + 0xcf, 0xa3, 0x7a, 0x64, 0x35, 0x1a, 0x5b, 0x84, 0x10, 0x48, 0xb1, 0xb1, 0x78, 0x1e, 0xab, 0xa2, + 0xd7, 0x96, 0xcd, 0x40, 0xc6, 0x5c, 0x4c, 0x7f, 0xe9, 0x22, 0xa7, 0xcb, 0xc7, 0xc2, 0x85, 0xb9, + 0xa4, 0xa6, 0x26, 0x7e, 0x29, 0xe0, 0x53, 0x3d, 0x66, 0xbb, 0xbb, 0x9d, 0x6f, 0x9d, 0xfc, 0x16, + 0x9a, 0xd0, 0x58, 0x99, 0xb7, 0x92, 0x7d, 0x5f, 0xdb, 0x17, 0x15, 0x81, 0x68, 0x7b, 0xb6, 0x0e, + 0xb7, 0xb2, 0xf9, 0xdd, 0xcd, 0xe8, 0xe8, 0x3c, 0x92, 0xf7, 0x08, 0x2f, 0x3d, 0xf8, 0x52, 0xb8, + 0x19, 0x0d, 0x04, 0x02, 0x3d, 0x2d, 0x2d, 0x1d, 0x5a, 0x47, 0xc7, 0x90, 0xa2, 0x69, 0x3a, 0x20, + 0xd1, 0xd8, 0xd8, 0x45, 0xdd, 0xa0, 0x8c, 0x32, 0xdc, 0x86, 0xdc, 0x7e, 0x63, 0x22, 0x24, 0x96, + 0xf0, 0x7a, 0x55, 0xb6, 0x6c, 0x59, 0x8d, 0xd5, 0x1a, 0xcb, 0xb8, 0x70, 0x4e, 0x3e, 0x30, 0xfc, + 0xbd, 0xbd, 0xdd, 0xc3, 0x99, 0x33, 0x9f, 0x01, 0x82, 0x96, 0xa1, 0x16, 0xfa, 0x1a, 0xc6, 0xf7, + 0xfe, 0xac, 0xab, 0x93, 0xb3, 0xe2, 0x0a, 0x7e, 0x7f, 0x02, 0x4e, 0x27, 0x9c, 0x3b, 0xd7, 0x60, + 0xac, 0x99, 0x3b, 0x37, 0x8d, 0xec, 0xec, 0x70, 0x33, 0xeb, 0xf4, 0x3a, 0x69, 0x73, 0xb7, 0x01, + 0xd0, 0xe8, 0x6a, 0x8c, 0x74, 0x64, 0x57, 0xaf, 0x9a, 0x3f, 0x3f, 0x7f, 0xfe, 0xaa, 0xbc, 0x74, + 0x69, 0x31, 0x8a, 0xa2, 0x20, 0x49, 0x32, 0x0e, 0x47, 0x12, 0x8b, 0x17, 0xcf, 0x27, 0x18, 0xd4, + 0xd0, 0x75, 0x1d, 0x49, 0x92, 0x19, 0x5f, 0x17, 0xca, 0xd8, 0x24, 0x64, 0x39, 0x9a, 0xe5, 0xba, + 0x35, 0x5e, 0xb3, 0x66, 0x9d, 0x31, 0x77, 0x7f, 0x8a, 0x9d, 0xe3, 0xf9, 0xbf, 0x0b, 0xfb, 0xfe, + 0xfd, 0xef, 0x3f, 0x37, 0x21, 0xcb, 0x3a, 0x7e, 0xbf, 0x46, 0x20, 0x10, 0xa4, 0xb6, 0xb6, 0x15, + 0x4d, 0xbb, 0xca, 0xca, 0x95, 0x05, 0x06, 0x77, 0xe2, 0xd4, 0x38, 0x03, 0x19, 0xab, 0xc9, 0x6a, + 0x8c, 0x83, 0xc1, 0xe0, 0x38, 0x02, 0x79, 0x79, 0xe9, 0x7b, 0x2a, 0x2b, 0xbf, 0x2a, 0x99, 0xcd, + 0x26, 0x23, 0x06, 0x1f, 0x1a, 0xf2, 0x30, 0x34, 0xe4, 0xc5, 0xe3, 0x19, 0xc3, 0xe7, 0x0b, 0x22, + 0xcb, 0xca, 0x04, 0xc0, 0xe1, 0xbd, 0x2c, 0x2b, 0xf4, 0xf5, 0x75, 0x73, 0xfc, 0xf8, 0x9b, 0x98, + 0x4c, 0x16, 0xb6, 0x6c, 0x79, 0x1c, 0xbf, 0xdf, 0x4f, 0x4f, 0x4f, 0x3b, 0x9a, 0xe6, 0x43, 0xd7, + 0x75, 0x12, 0x13, 0xed, 0x64, 0x65, 0xcd, 0x23, 0x3d, 0x3d, 0x87, 0x9b, 0x3d, 0x9d, 0x38, 0x07, + 0x9d, 0x48, 0x12, 0x84, 0x88, 0xac, 0xeb, 0xe0, 0xf5, 0xfa, 0xc8, 0x76, 0x14, 0x50, 0x5a, 0x5a, + 0xc4, 0x47, 0x1f, 0x7d, 0xc2, 0xd8, 0x58, 0xc0, 0x00, 0xb4, 0xd8, 0x5e, 0x4c, 0xe3, 0x53, 0x8d, + 0x68, 0xba, 0x86, 0x45, 0xb1, 0x44, 0x5a, 0xa1, 0x8c, 0x8c, 0xe4, 0x7c, 0xb7, 0x7b, 0x18, 0x49, + 0x4a, 0x44, 0x51, 0x14, 0x84, 0x10, 0xf8, 0x7c, 0x7e, 0x46, 0x47, 0xbd, 0xb8, 0xdd, 0x1e, 0xc6, + 0xc6, 0x42, 0x08, 0xc8, 0x11, 0xbd, 0xa2, 0x28, 0xbc, 0xf4, 0xaf, 0xff, 0x42, 0xfe, 0xe3, 0x47, + 0xe9, 0x73, 0x7b, 0xd8, 0xff, 0xcb, 0x9d, 0xbc, 0xf2, 0x6f, 0xbf, 0x44, 0x92, 0x86, 0x39, 0x72, + 0xe4, 0x08, 0x6b, 0xd6, 0xac, 0xe1, 0xeb, 0x5f, 0x7f, 0x90, 0x9e, 0x9e, 0x6e, 0xbe, 0xf8, 0xe2, + 0x02, 0x0d, 0xed, 0x43, 0x54, 0x6d, 0xac, 0x20, 0xa0, 0x43, 0xe7, 0xa8, 0x42, 0x9f, 0x47, 0xc6, + 0x35, 0x26, 0xe3, 0x72, 0xfb, 0xf0, 0x35, 0x5f, 0xc6, 0x6c, 0x76, 0x30, 0x32, 0x12, 0xc4, 0xed, + 0xbe, 0x15, 0x82, 0x7b, 0x02, 0x1e, 0x8e, 0xfe, 0xfd, 0x28, 0x41, 0x3d, 0xc8, 0x22, 0xfb, 0x22, + 0xca, 0xb2, 0xca, 0xc2, 0x75, 0xc0, 0xe7, 0x0b, 0xdc, 0x71, 0x79, 0x4e, 0x08, 0x9d, 0x2f, 0xba, + 0xdc, 0x34, 0x34, 0xa6, 0xa0, 0x6b, 0xc9, 0x14, 0x0e, 0x04, 0xc8, 0xcd, 0xcd, 0xe5, 0x87, 0x3f, + 0x7c, 0x8e, 0x13, 0x27, 0x4e, 0x50, 0x5f, 0x5f, 0xcf, 0xe6, 0xcd, 0x5b, 0x89, 0x8d, 0x8d, 0x23, + 0x23, 0x23, 0x9b, 0x76, 0x57, 0x2d, 0xb5, 0x6d, 0xe0, 0x09, 0x2a, 0x13, 0xda, 0xa2, 0x03, 0x3a, + 0x09, 0x8a, 0x17, 0x49, 0x92, 0x27, 0xf2, 0x07, 0x7f, 0xd8, 0x19, 0xd7, 0x06, 0xae, 0xf1, 0xd3, + 0x4f, 0x7e, 0x0a, 0xc0, 0x8a, 0x9c, 0x15, 0x06, 0x02, 0x06, 0x07, 0xee, 0xb4, 0x62, 0xe0, 0xf1, + 0xb8, 0xb9, 0x79, 0xb3, 0x81, 0x5d, 0x55, 0x0f, 0xf3, 0x1f, 0xa7, 0xab, 0x20, 0x38, 0xc6, 0x0f, + 0x7e, 0x50, 0x05, 0xc0, 0xb3, 0xcf, 0x3e, 0x4b, 0x77, 0x77, 0x37, 0x3b, 0x76, 0xec, 0x30, 0x2c, + 0x8b, 0xaa, 0xaa, 0x3c, 0xb8, 0x70, 0x2e, 0xcd, 0x2d, 0xe7, 0x19, 0x1b, 0x76, 0xd3, 0xd6, 0xd6, + 0x41, 0x71, 0xf1, 0x72, 0x02, 0x01, 0x1d, 0x9f, 0x4f, 0xc3, 0x9e, 0x36, 0x0f, 0x97, 0x6b, 0x74, + 0xc6, 0xe7, 0x47, 0xc4, 0x42, 0xb3, 0xa3, 0xbc, 0xa0, 0xa3, 0xa3, 0x81, 0xd5, 0xab, 0xd7, 0x60, + 0xb1, 0x98, 0xf9, 0xf6, 0xb7, 0xdd, 0xc4, 0xc5, 0x99, 0xb1, 0xdb, 0x53, 0x01, 0x28, 0x2f, 0x2f, + 0xe7, 0xfc, 0xf9, 0x8f, 0x11, 0x42, 0x27, 0x18, 0xd4, 0x8d, 0x75, 0x59, 0x59, 0x73, 0x70, 0x38, + 0x32, 0x09, 0x04, 0x34, 0x3c, 0x9e, 0x11, 0x2e, 0x5c, 0xb8, 0xcc, 0x92, 0x25, 0x6b, 0x70, 0xb9, + 0x46, 0x19, 0x1a, 0x1a, 0x35, 0x14, 0xb7, 0xbe, 0xbe, 0xde, 0x58, 0x53, 0x98, 0x52, 0xc8, 0x73, + 0x4b, 0x9e, 0x43, 0xd3, 0x35, 0xee, 0x75, 0xdc, 0x1b, 0x89, 0xc0, 0x9d, 0x30, 0xa0, 0xa9, 0xe9, + 0x33, 0x96, 0x2d, 0xfb, 0x67, 0x83, 0xed, 0xa9, 0xa9, 0xa9, 0x98, 0x4c, 0xca, 0xac, 0xf6, 0x88, + 0x89, 0xb1, 0x90, 0x97, 0x97, 0x41, 0x6f, 0x6f, 0x3b, 0x26, 0x53, 0x4a, 0xd8, 0xb7, 0x63, 0xc7, + 0x8e, 0x61, 0xb3, 0xd9, 0x70, 0x38, 0x1c, 0xc4, 0xab, 0xf1, 0x7c, 0xef, 0xfe, 0xef, 0x45, 0x38, + 0xb2, 0x59, 0xc5, 0x42, 0x53, 0x45, 0x27, 0x3b, 0xdb, 0x81, 0xc5, 0x62, 0x8d, 0xfa, 0x3d, 0x10, + 0xf0, 0xd3, 0xd6, 0xd6, 0xc6, 0xe0, 0xe0, 0x20, 0x00, 0x69, 0x69, 0xe9, 0x64, 0x66, 0x66, 0x45, + 0xfd, 0x37, 0x3b, 0x3b, 0x97, 0xda, 0xda, 0xb3, 0x14, 0x14, 0xac, 0x0e, 0x9b, 0x3f, 0x7c, 0xf8, + 0x30, 0xe9, 0xe9, 0x49, 0xd3, 0xe6, 0xca, 0xaa, 0xaa, 0x22, 0x84, 0x10, 0x77, 0x84, 0x40, 0x57, + 0xd7, 0x75, 0x96, 0x2d, 0xfb, 0x5a, 0xd4, 0x6f, 0x9d, 0x9d, 0xed, 0xb4, 0xb5, 0xb5, 0xa1, 0xaa, + 0x26, 0x86, 0x86, 0x46, 0x90, 0x24, 0x09, 0x9f, 0xcf, 0xcf, 0xa7, 0x9f, 0xd6, 0x51, 0x56, 0x56, + 0x8e, 0xd9, 0x1c, 0x37, 0x45, 0x8e, 0xe1, 0xbe, 0xfb, 0x96, 0x50, 0x57, 0xf7, 0x09, 0xd9, 0xd9, + 0xf7, 0x19, 0x22, 0xd4, 0xd3, 0xd3, 0x43, 0x30, 0x38, 0x12, 0x35, 0x4a, 0x08, 0x51, 0xbf, 0xa1, + 0xa1, 0xa1, 0xff, 0x8e, 0x94, 0xd8, 0xe1, 0x70, 0xa0, 0xeb, 0x91, 0x86, 0xab, 0xb7, 0xb7, 0x9b, + 0xc1, 0xc1, 0x41, 0x46, 0x47, 0x35, 0xac, 0x56, 0xab, 0x51, 0x95, 0xd0, 0xb4, 0x20, 0x16, 0x8b, + 0x87, 0x0b, 0x17, 0xfe, 0x4c, 0x59, 0x59, 0xf9, 0xd4, 0x82, 0x20, 0xb1, 0xb1, 0x56, 0x02, 0x81, + 0x81, 0x30, 0x8f, 0x7e, 0xe0, 0xc0, 0xab, 0xaf, 0xc8, 0xf2, 0x48, 0xff, 0xd4, 0xca, 0x21, 0x20, + 0x64, 0x59, 0xd6, 0x15, 0x45, 0xf1, 0x0d, 0x0e, 0x0e, 0xbe, 0x35, 0x6b, 0x04, 0x7c, 0xbe, 0x31, + 0x12, 0x13, 0x93, 0x22, 0xe6, 0x15, 0x45, 0xa2, 0xa3, 0xa3, 0x1d, 0xbf, 0x5f, 0x22, 0x3b, 0x7b, + 0x1e, 0x03, 0x03, 0x7d, 0xfc, 0xfe, 0xf7, 0x27, 0x70, 0x38, 0x1c, 0xac, 0x5c, 0xb9, 0x0e, 0x9b, + 0xad, 0x80, 0xae, 0xae, 0x26, 0xde, 0x7b, 0xef, 0x14, 0x6b, 0xd7, 0xae, 0x27, 0x10, 0xd0, 0xc2, + 0x3c, 0xaa, 0xdd, 0x6e, 0x0b, 0xdb, 0xef, 0xf2, 0xe5, 0xab, 0x57, 0x9a, 0x9b, 0x2f, 0xb6, 0x47, + 0x93, 0x50, 0xc0, 0x07, 0x0c, 0x44, 0x24, 0xf5, 0x33, 0x69, 0x2e, 0x57, 0x1f, 0x76, 0x7b, 0x5e, + 0x64, 0x52, 0xdf, 0xdf, 0x4b, 0x7c, 0x7c, 0x3c, 0x99, 0x59, 0x59, 0x0c, 0x38, 0xfb, 0x78, 0xf4, + 0xd1, 0x72, 0x02, 0x81, 0x71, 0x6f, 0xba, 0x60, 0xc1, 0x21, 0x4e, 0xbf, 0x77, 0x0e, 0xc1, 0x1c, + 0x5c, 0xae, 0x7e, 0x14, 0x45, 0x9a, 0x22, 0x1a, 0x90, 0x94, 0x64, 0xc3, 0xe7, 0xf3, 0x13, 0x32, + 0x2a, 0x56, 0x6b, 0x4a, 0x17, 0x10, 0x0d, 0x01, 0x6d, 0xe2, 0xf1, 0x00, 0x6e, 0xf9, 0x56, 0x10, + 0x36, 0x53, 0x04, 0x7a, 0xb1, 0x58, 0x62, 0xa3, 0xcc, 0x0f, 0x10, 0x08, 0x6a, 0xd8, 0x52, 0x12, + 0x79, 0xe7, 0xdd, 0xff, 0x32, 0x80, 0x07, 0xb8, 0x7e, 0xfd, 0x3a, 0x7f, 0xfb, 0xdb, 0x25, 0xb2, + 0x73, 0xb2, 0x48, 0x48, 0x48, 0xa0, 0xb9, 0xb9, 0x29, 0x62, 0x7d, 0x52, 0x92, 0x0d, 0x97, 0xab, + 0xc7, 0xd0, 0x81, 0xc2, 0xc2, 0xf2, 0x66, 0xe0, 0x5a, 0x94, 0xe7, 0xba, 0x10, 0xa2, 0x51, 0x08, + 0x71, 0x53, 0x08, 0x31, 0x3a, 0x6b, 0x11, 0x92, 0x24, 0x99, 0x68, 0x51, 0x74, 0x28, 0x2d, 0xd4, + 0x75, 0x1d, 0x6b, 0x7c, 0xa4, 0x75, 0x8a, 0xb7, 0x5a, 0x8d, 0xc0, 0x30, 0x74, 0x91, 0x32, 0xd5, + 0xa3, 0x2b, 0x8a, 0x32, 0x49, 0x24, 0x55, 0x21, 0x66, 0x70, 0x81, 0x27, 0xcf, 0x56, 0x84, 0x92, + 0x93, 0xd3, 0x18, 0x1b, 0x8b, 0xf4, 0x96, 0xa9, 0xa9, 0x76, 0x4c, 0x31, 0x31, 0x8c, 0x8c, 0xb8, + 0xf9, 0xe6, 0x63, 0x9b, 0x48, 0x49, 0xb9, 0x65, 0xd7, 0x1f, 0x7a, 0xa8, 0x8c, 0xe2, 0xe2, 0x12, + 0x7a, 0x7b, 0xbb, 0x71, 0xbb, 0xdd, 0xe4, 0xe7, 0xcf, 0x8f, 0x4c, 0x59, 0x87, 0x06, 0x49, 0x4a, + 0x4a, 0x9f, 0x75, 0x61, 0x6d, 0xd6, 0x8e, 0xcc, 0x66, 0x73, 0xe0, 0x76, 0x0f, 0x61, 0xb1, 0x24, + 0x4c, 0x41, 0xcc, 0x4e, 0x43, 0xc3, 0x15, 0xdc, 0x23, 0xa3, 0xe4, 0xcc, 0xc9, 0xe7, 0xec, 0xf9, + 0x8b, 0xd4, 0x7c, 0xf8, 0x1e, 0x76, 0xbb, 0x83, 0x65, 0xcb, 0xcb, 0xf0, 0x7a, 0xbd, 0xf4, 0x76, + 0x77, 0xe0, 0x74, 0x3a, 0xd1, 0xb4, 0xc8, 0x8c, 0x6c, 0x70, 0x70, 0x90, 0xa4, 0xa4, 0x7b, 0x66, + 0x5c, 0xa9, 0x08, 0xe3, 0xc0, 0x6c, 0x44, 0x28, 0x26, 0xc6, 0xc4, 0xe8, 0xe8, 0x50, 0x94, 0x0b, + 0x0c, 0x9d, 0xd2, 0xd2, 0x45, 0x20, 0x34, 0x6e, 0xb4, 0x7e, 0x81, 0xa6, 0x05, 0x58, 0xfd, 0xc8, + 0x5a, 0x16, 0x3f, 0xb0, 0x14, 0x97, 0x6b, 0x80, 0x96, 0xa6, 0x6b, 0xb4, 0xb6, 0xb6, 0x50, 0x59, + 0xb9, 0x35, 0x22, 0xeb, 0x8a, 0x89, 0x51, 0xe8, 0xef, 0x1f, 0xfe, 0x9f, 0x5d, 0xb3, 0xce, 0xa6, + 0xf5, 0xf4, 0xf4, 0x93, 0x9f, 0x1f, 0x29, 0x9e, 0x29, 0x29, 0xe3, 0x71, 0xd0, 0x9f, 0xfe, 0x54, + 0x8b, 0x84, 0x3e, 0xa1, 0x2f, 0x3a, 0x63, 0x63, 0x63, 0x34, 0x37, 0x37, 0xf3, 0xd8, 0x63, 0x1b, + 0x89, 0x8d, 0x8d, 0x27, 0x10, 0x08, 0xbf, 0xec, 0x70, 0xbb, 0x5d, 0x58, 0xad, 0x19, 0x5f, 0x9a, + 0x27, 0xff, 0xaf, 0xe8, 0xc0, 0x78, 0x02, 0xf4, 0x15, 0x9a, 0x9a, 0xfe, 0x1e, 0x71, 0x88, 0x10, + 0xe3, 0x61, 0x43, 0x65, 0xe5, 0x66, 0x0a, 0x0b, 0x0b, 0xf1, 0x7a, 0x3d, 0xf8, 0x7c, 0x3e, 0x4a, + 0x4b, 0x17, 0x51, 0x5d, 0xfd, 0x34, 0xc9, 0xc9, 0xb6, 0x48, 0x00, 0x64, 0xa8, 0xab, 0xfb, 0x0b, + 0x05, 0x05, 0x0f, 0xcc, 0xa8, 0xa2, 0x7d, 0xdb, 0x1b, 0x9a, 0x99, 0x36, 0x93, 0xc9, 0x42, 0x5f, + 0x9f, 0xce, 0xf0, 0xb0, 0x13, 0x87, 0x23, 0x23, 0x7a, 0x15, 0x22, 0x2b, 0x8b, 0xec, 0xec, 0x1c, + 0x23, 0x1a, 0x0d, 0x06, 0xb5, 0x69, 0x82, 0xc2, 0x7f, 0x50, 0x52, 0xb2, 0x6a, 0x8a, 0x29, 0x9f, + 0x39, 0x3c, 0x77, 0xc4, 0x01, 0x80, 0x39, 0x73, 0x0a, 0xb8, 0x74, 0xe9, 0x12, 0xc1, 0x60, 0xe0, + 0x8e, 0xef, 0xb7, 0x3c, 0x1e, 0x37, 0xc3, 0xc3, 0x1a, 0xc9, 0xc9, 0xf6, 0x19, 0x5d, 0x9a, 0xdf, + 0x06, 0x81, 0x3b, 0x4b, 0x68, 0xee, 0xb9, 0xe7, 0x7e, 0xfe, 0xf0, 0x87, 0xd3, 0xf4, 0xf5, 0xf5, + 0xcc, 0x7a, 0xed, 0x8d, 0x1b, 0x8d, 0xd4, 0xd5, 0x7d, 0xc6, 0x92, 0x25, 0xab, 0xa2, 0x00, 0x3f, + 0x7b, 0x1d, 0xb8, 0xa3, 0x94, 0xd2, 0x6c, 0xb6, 0x50, 0x5a, 0xba, 0x82, 0xbf, 0xfe, 0xf5, 0x73, + 0x2e, 0x5d, 0xfa, 0xf3, 0x8c, 0xae, 0x52, 0xbd, 0x5e, 0x2f, 0x35, 0x35, 0x1f, 0xa2, 0xeb, 0xc9, + 0x94, 0x97, 0xaf, 0x9f, 0xa6, 0xa8, 0x35, 0x73, 0x98, 0x54, 0x80, 0x96, 0x96, 0xde, 0xda, 0x91, + 0x11, 0xcf, 0x37, 0x13, 0xa3, 0x5c, 0x23, 0xcd, 0x8c, 0x13, 0x5f, 0xc1, 0xeb, 0x1d, 0xe5, 0xf8, + 0xf1, 0xdf, 0x91, 0x9e, 0x6e, 0x27, 0x27, 0x27, 0x8b, 0xcc, 0xcc, 0x4c, 0x1c, 0x8e, 0x34, 0x02, + 0x01, 0x3f, 0x3d, 0x3d, 0xbd, 0x74, 0x76, 0x76, 0xd2, 0xd5, 0xd5, 0x8d, 0xdb, 0xed, 0x63, 0xd9, + 0xb2, 0xb5, 0x98, 0xcd, 0x96, 0x69, 0x32, 0x3d, 0x70, 0xbb, 0x47, 0x9c, 0x92, 0x24, 0x35, 0xcf, + 0x28, 0x32, 0x10, 0x42, 0x50, 0x51, 0xf1, 0xfc, 0x03, 0x99, 0x99, 0xc9, 0xff, 0xb9, 0x60, 0x41, + 0x56, 0xa1, 0x10, 0xe3, 0xf5, 0x1e, 0xbf, 0x5f, 0xc3, 0xe7, 0x0b, 0x10, 0x0c, 0xea, 0x84, 0x8a, + 0x5d, 0xe3, 0xd5, 0x88, 0x90, 0x85, 0x90, 0x8d, 0x8b, 0xf1, 0xd0, 0x9c, 0x2c, 0x2b, 0x13, 0x3e, + 0xc1, 0x47, 0x30, 0x38, 0x8c, 0xaa, 0x8e, 0xa1, 0x69, 0x12, 0x8a, 0x92, 0x88, 0xc5, 0x62, 0x43, + 0x55, 0xcd, 0x46, 0x5d, 0xe8, 0xd6, 0x75, 0xe9, 0x78, 0x8d, 0x33, 0x10, 0x18, 0xaf, 0x0b, 0xf5, + 0xf5, 0x0d, 0xf4, 0x8d, 0x8c, 0x8c, 0xee, 0x39, 0x7c, 0x78, 0xd7, 0x91, 0x99, 0x20, 0xf0, 0xdf, + 0xd1, 0x1d, 0xfc, 0xa3, 0x61, 0x31, 0x70, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, + 0xae, 0x42, 0x60, 0x82, }; const BITMAP_OPAQUE icon_bitmap2component_xpm[1] = {{ png, sizeof( png ), "icon_bitmap2component_xpm" }}; diff --git a/bitmaps_png/icons/icon_bitmap2component.ico b/bitmaps_png/icons/icon_bitmap2component.ico index 33f2bae718948b45067611c4b9d8e4e2885e2dfe..590b782d593b06818ca9605f653ee712a6e0b60c 100644 GIT binary patch literal 3262 zcmcJRNlaUJ9><+q4tAWIztCvMXf)ah9Qca%cO2F4YxXftsz=Q%W;5^JJ(ABi5=0-9 zsd(@}djG!S`|njPEt(&G(6+Yrx3%dyItV)baa)^OCXRR3zdvnH+t69-Yo_FocGNqGq#Qt0nvU7w6`7 zcXyvXd-n70?slb8%;$TR%5pgTESs%_!^NQ?KZm1cGWWQ(GbNYnv{(+}Yeb@u&$qt3 z3}&6bv$?sky1Fty?;IVCjEqqH;N!>2&dwTj?_J5^ILzjK`J)<5(CuC<6b|Aq! z*D1F;+S@!%hfpA(`1yET&EZt}4pv+LM?Ie3^1HI4*Xu1tqjg}w(%)~? z>2Tu{H01OA23@W+NrK;g=T7(UjLl}F-VWlUK6M&Ry?)SNUayxVNv&3kaO(A0LVYR} zRDF)A)vK$kPo6wkd2Y+g%XYh6c7Xqw4<@BD;`blkU(T_y1-F~x|MS9yYuBzJthu?l znVFelu?Ux{{Ndq!`xo;^B@_;5Gz}NeqOC9=+S}U`@i^wgO1bQDI(6FK0f{(j&{O*8 zc)TlDuK1>WNA4bZz3X)_eLkOz#X5wK`POjh!s<0z!|A^*EiD~Adi3_~+u%ndkp+)( zBPieUa(7&vgWR8>KgAEE12291(rMOd@B@K>S||)S9Eb?F=aR_@yFFksg)Ekc)f%_i zQcfo+k=$(j`1WU?VO;d6)drI6S1KJOnHcLWj+^nHbq~0d;yCgymBRmO+Dk}$9{lm~ zag=ChbF)z*8Inp3e13m-x0b=^XEFy^ERw?+BLrcSN^LTkRZ5J> zrEZnVrBu3=N*h7oF%b=i!S_yiX?JO_b-f0DC=>!8Dpe|#&CSiAJtk~}a7Yb`%eTA#zot?Q%X1$?dA|78&B-TFqX#B>F zSU!)Sf71tQ12|cl%+2M{KH!(jWdw+_NhA`NFJDGyW%8L!E|bq=vc|!8yWQpTy4gJU z_1DR+uAELc|L(hff+!)7ot>vbVe#x)Z%@zk?CflBZ!gsLrmGe5YS*i{5qxZY>(;I2 z=4Q~qhyPXeI#1?uIYdP9kuoGsAjm;~U;}{_yw)w9UO#cd@zz`Jn>Qs;JCq4QpZA6D zyIihImoA~Hu}foPBb`o%KJJ7Y^>e2COg5XX^ARath|lM8QR zGc`L~X=;jIy&8(eNDyXA1me zvRXEue;%2ho~^^-JQX-LLRxXxi<{HwM0LT~?9}=5fw$lG8jV>9{J(IN1U5pyzc?H# z!3PRJ{9d5bqZL?)BzPx1fXi{HcshaE=_bKov6zWDLxFL!Bs$1kv70Z@9x_y7O^ literal 103478 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 + inkscape:version="0.48.4 r9939" + sodipodi:docname="icon_bitmap2component.svg" + inkscape:export-filename="E:\kicad-launchpad\kicad-bzr\bitmaps_png\icon_bitmap2component.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> @@ -22,6 +25,7 @@ image/svg+xml + @@ -35,14 +39,14 @@ inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="1280" - inkscape:window-height="949" + inkscape:window-height="977" id="namedview345" showgrid="false" inkscape:zoom="4.9166667" inkscape:cx="24" inkscape:cy="23.59322" - inkscape:window-x="0" - inkscape:window-y="25" + inkscape:window-x="-4" + inkscape:window-y="-4" inkscape:window-maximized="1" inkscape:current-layer="svg2" /> + y="-0.34118" + x="-0.34118"> @@ -131,18 +135,18 @@ id="ba" xlink:href="#aw" gradientUnits="userSpaceOnUse" - cy="486.65" - cx="605.71" - gradientTransform="matrix(-.062854 0 0 .020588 46.705 34.451)" + cy="486.64999" + cx="605.71002" + gradientTransform="matrix(-0.062854,0,0,0.020588,46.705,34.451)" r="117.14" /> + x2="302.85999" + gradientTransform="matrix(0.062854,0,0,0.020588,1.2826,34.451)" + y1="366.64999" + x1="302.85999"> + r="0.54688001" /> + x1="6.5595999"> + x1="5.3347998"> + x2="24.082001" + gradientTransform="matrix(1.0732,0,0,1.0757,2.6528,-0.50307)" + y1="21.016001" + x1="21.568001" /> + r="77.922997"> + cx="258.76001" + gradientTransform="matrix(0.17369,-0.0023476,0.0017845,0.13208,-14.213,13.883)" + r="18.577999" /> + cx="439.04999" + gradientTransform="matrix(0.071034,-0.056703,0.11549,0.15363,-18.07,41.978)" + r="75.751999"> + x1="457.20001"> + gradientTransform="matrix(-0.15022,0.15417,-0.1987,-0.20393,113.38,-16.437)" + r="74.907997" /> + cx="441.35999" + gradientTransform="matrix(-0.012867,-0.088952,0.29168,-0.044437,-3.9993,74.887)" + r="75.755997"> + gradientTransform="matrix(-0.14051,-0.13746,0.12306,-0.13043,81.917,108.28)" + r="74.907997" /> + cx="344.26001" + gradientTransform="matrix(-0.013724,-0.24747,0.093642,-0.0055498,12.749,122.21)" + r="74.907997" /> + x1="469.35999" /> + cy="95.382004" + cx="529.40002" + gradientTransform="matrix(0,0.10037,-0.10096,0,38.13,-18.815)" + r="74.907997"> + gradientTransform="matrix(0,-0.096503,0.10561,0,11.021,76.299)" + r="74.907997"> + cx="459.45001" + gradientTransform="matrix(0.15094,-2.3254e-8,1.3013e-8,0.12469,-40.912,13.001)" + r="74.907997"> + gradientTransform="matrix(0.10492,-0.072831,0.035871,0.057009,-25.672,64.354)" + r="74.907997"> + cx="427.79999" + gradientTransform="matrix(-0.44827,0.10225,-0.081708,-0.35819,230.04,-5.144)" + r="74.907997"> + gradientTransform="matrix(0.942,-0.093118,0.12194,0.43761,-363.99,7.6542)" + r="2.0222001"> + r="2.0222001"> + x1="697.90997"> @@ -693,7 +697,7 @@ id="ch" gradientUnits="userSpaceOnUse" cy="7.2679" - cx="8.1436" + cx="8.1436005" gradientTransform="matrix(0.83037,0,0,0.95552,-34.846,-1.8031)" r="38.159"> + r="37.751999"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + id="g4556" + transform="translate(22.517791,-2.369546)"> - - - - + transform="matrix(0.4256726,0,0,0.4725695,-24.2945,2.8664656)" + id="g3214"> - - - - - - - - - - - - - - - - - + inkscape:connector-curvature="0" + style="opacity:0.3;fill:url(#radialGradient4571)" + id="path221" + d="M 12.491276,32.6163 V 37.616 C 9.5334885,37.625 5.3407,36.496 5.3407,35.116 c 0,-1.38 3.300737,-2.4995 7.150576,-2.4995 z" /> + style="opacity:0.3;fill:url(#linearGradient4573)" + id="rect223" + x="12.491277" + y="32.616299" + width="27.733829" + height="5" /> + inkscape:connector-curvature="0" + style="opacity:0.3;fill:url(#radialGradient4575)" + id="path225" + d="m 40.225015,32.6163 v 4.9997 c 2.957879,0.0094 7.150576,-1.1202 7.150576,-2.5002 0,-1.38 -3.300645,-2.5 -7.150485,-2.5 z" /> + + + + + + + + + + + + + height="2.5815265" + width="11.686437" + y="22.073664" + x="-15.861252" + id="rect4047-6" + style="opacity:0.3;fill:url(#linearGradient3974)" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + style="fill:url(#XMLID_20_)" + id="rect184" + x="185.10001" + y="-76.116669" + width="36.259998" + height="11.18" /> + style="fill:url(#XMLID_21_)" + inkscape:connector-curvature="0" + id="path197" + d="m 185.1,-77.536667 v 9.77 c 12.5,-2.16 23.8,-7.14 36.3,-6.93 v -2.85 c 0,0.01 -36.3,0.01 -36.3,0.01 z" /> + + style="fill:#ffffff" + inkscape:connector-curvature="0" + id="path201" + d="m 148.5,-75.356667 c -3.1,1.63 -5.2,4.88 -5.2,8.61 0,5.37 4.3,9.74 9.7,9.74 5.4,0 9.7,-4.37 9.7,-9.74 0,-3.9 -2.3,-7.25 -5.6,-8.81 -0.9,-0.04 -1.8,-0.07 -2.8,-0.07 -2,0 -3.9,0.1 -5.8,0.27 z" /> + inkscape:connector-curvature="0" + id="path203" + d="m 144.2,-66.926667 c 0,4.57 3.7,8.29 8.3,8.29 4.5,0 8.2,-3.72 8.2,-8.29 0,-4.57 -3.7,-8.28 -8.2,-8.28 -4.6,0 -8.3,3.71 -8.3,8.28 z" /> + style="fill:url(#XMLID_22_)" + inkscape:connector-curvature="0" + id="path216" + d="m 116.1,-68.356667 c 0,4.29 3.5,7.78 7.8,7.78 4.3,0 7.8,-3.49 7.8,-7.78 0,-4.29 -3.5,-7.77 -7.8,-7.77 -4.3,0 -7.8,3.48 -7.8,7.77 z" /> + style="fill:url(#XMLID_23_)" + inkscape:connector-curvature="0" + id="path241-7" + d="m 123.9,-76.026667 c -2.5,0 -4.7,1.3 -5.7,3.18 0.3,2.54 2.7,4.52 5.7,4.52 3,0 5.4,-1.95 5.7,-4.47 -1,-1.9 -3.2,-3.23 -5.7,-3.23 z" /> - - - - - - - - - - - - - - - - - - - - - - - - - - + style="fill:url(#linearGradient3558)" + inkscape:connector-curvature="0" + id="path254" + d="m 147.1,-68.946667 c 1,1.92 2.9,3.26 5.2,3.26 2.4,0 4.5,-1.48 5.4,-3.58 -0.9,-1.98 -2.9,-3.37 -5.2,-3.37 -2.5,0 -4.5,1.54 -5.4,3.69 z" /> diff --git a/bitmaps_png/sources/image.svg b/bitmaps_png/sources/image.svg index d845d8c901..4997dd2593 100644 --- a/bitmaps_png/sources/image.svg +++ b/bitmaps_png/sources/image.svg @@ -1,32 +1,38 @@ + + + inkscape:version="0.48.4 r9939" + sodipodi:docname="Gnome-dev-camera.svg"> + id="metadata262"> image/svg+xml - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + id="g3239" + transform="matrix(0.493198,0,0,0.5064487,-7.2700036,65.334498)"> + + + + + + + + + + + + + + + + + + + + + + + + - + style="fill:url(#XMLID_20_)" + id="rect184" + x="185.10001" + y="-76.116669" + width="36.259998" + height="11.18" /> + style="fill:url(#XMLID_21_)" + inkscape:connector-curvature="0" + id="path197" + d="m 185.1,-77.536667 v 9.77 c 12.5,-2.16 23.8,-7.14 36.3,-6.93 v -2.85 c 0,0.01 -36.3,0.01 -36.3,0.01 z" /> + + style="fill:#ffffff" + inkscape:connector-curvature="0" + id="path201" + d="m 148.5,-75.356667 c -3.1,1.63 -5.2,4.88 -5.2,8.61 0,5.37 4.3,9.74 9.7,9.74 5.4,0 9.7,-4.37 9.7,-9.74 0,-3.9 -2.3,-7.25 -5.6,-8.81 -0.9,-0.04 -1.8,-0.07 -2.8,-0.07 -2,0 -3.9,0.1 -5.8,0.27 z" /> + inkscape:connector-curvature="0" + id="path203" + d="m 144.2,-66.926667 c 0,4.57 3.7,8.29 8.3,8.29 4.5,0 8.2,-3.72 8.2,-8.29 0,-4.57 -3.7,-8.28 -8.2,-8.28 -4.6,0 -8.3,3.71 -8.3,8.28 z" /> + style="fill:url(#XMLID_22_)" + inkscape:connector-curvature="0" + id="path216" + d="m 116.1,-68.356667 c 0,4.29 3.5,7.78 7.8,7.78 4.3,0 7.8,-3.49 7.8,-7.78 0,-4.29 -3.5,-7.77 -7.8,-7.77 -4.3,0 -7.8,3.48 -7.8,7.77 z" /> + style="fill:url(#XMLID_23_)" + inkscape:connector-curvature="0" + id="path241" + d="m 123.9,-76.026667 c -2.5,0 -4.7,1.3 -5.7,3.18 0.3,2.54 2.7,4.52 5.7,4.52 3,0 5.4,-1.95 5.7,-4.47 -1,-1.9 -3.2,-3.23 -5.7,-3.23 z" /> - - - - - - - - - - - - - - - - - - - - - - - - - - + style="fill:url(#XMLID_24_)" + inkscape:connector-curvature="0" + id="path254" + d="m 147.1,-68.946667 c 1,1.92 2.9,3.26 5.2,3.26 2.4,0 4.5,-1.48 5.4,-3.58 -0.9,-1.98 -2.9,-3.37 -5.2,-3.37 -2.5,0 -4.5,1.54 -5.4,3.69 z" /> + From 26ca1ad03def7da5202162b9a674626aeed02f69 Mon Sep 17 00:00:00 2001 From: Miguel Angel Ajo Date: Mon, 10 Feb 2014 10:15:48 +0100 Subject: [PATCH 13/18] Fix py26 testing for OSX, assertIsNotNone unavailable for py26 --- qa/testcases/test_002_board_class.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qa/testcases/test_002_board_class.py b/qa/testcases/test_002_board_class.py index 79773ba0c3..98f82abc29 100644 --- a/qa/testcases/test_002_board_class.py +++ b/qa/testcases/test_002_board_class.py @@ -88,7 +88,7 @@ class TestBoardClass(unittest.TestCase): self.assertTrue(result) pcb2 = LoadBoard(self.FILENAME) - self.assertIsNotNone(pcb2) + self.assertNotEqual(pcb2,None) tb = pcb2.GetTitleBlock() self.assertEqual(tb.GetTitle(),self.TITLE) From c93562477906cf2c914768f705c6e717b311bf14 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Mon, 10 Feb 2014 10:30:08 +0100 Subject: [PATCH 14/18] Use environment KISYS3DMOD to know defaut path for 3D shapes in footprint editors dialogs. --- Documentation/compiling/COMPILING.txt | 78 ++-- common/edaappl.cpp | 19 +- pcbnew/dialogs/dialog_SVG_print.cpp | 2 +- .../dialog_edit_module_for_BoardEditor.cpp | 36 +- ...ialog_edit_module_for_BoardEditor_base.cpp | 11 +- ...ialog_edit_module_for_BoardEditor_base.fbp | 188 +++++++- .../dialog_edit_module_for_BoardEditor_base.h | 2 + .../dialog_edit_module_for_Modedit.cpp | 42 +- .../dialog_edit_module_for_Modedit_base.cpp | 15 +- .../dialog_edit_module_for_Modedit_base.fbp | 414 +++++++++++++----- .../dialog_edit_module_for_Modedit_base.h | 4 +- 11 files changed, 625 insertions(+), 186 deletions(-) diff --git a/Documentation/compiling/COMPILING.txt b/Documentation/compiling/COMPILING.txt index f53e7b10dc..fde596fa3a 100644 --- a/Documentation/compiling/COMPILING.txt +++ b/Documentation/compiling/COMPILING.txt @@ -31,15 +31,22 @@ KiCad from source. * bzr - Bazaar version control system * CMake - Cross-platform make * GLUT - The OpenGL Utility Library +* GLEW * wxGTK or wxWidgets - The wxWidgets GUI toolkit with GTK+ bindings +* libbz2 (dev) +* libcairo (dev) * Boost - Collection of portable C++ source libraries -boost will be automagically downloaded and copied in kicad sources tree, +boost will be automagically downloaded, copied in kicad sources tree and patched, the first time you compile kicad. Useful, but not required: * Doxygen - Documentation system for several programming languages +Required to build Kicad with scripting (using python) support: +Python +Swig + KiCad uses the Bazaar version control system to track source code changes, and download the boost libraries needed by Kicad. Be sure you bzr install also includes bzrtools. @@ -60,40 +67,43 @@ Install or Build wxWidgets WARNING: see wxWidgets_patch_notes.txt for patches and issues in wxWidgets. -If on Windows, download -http://sourceforge.net/projects/wxwindows/files/wxAll/2.9.3/wxWidgets-2.9.3.zip/download +On Windows, download +http://sourceforge.net/projects/wxwindows/files/3.0.0/wxWidgets-3.0.0.zip/download or a newer version. Do NOT use previous versions which all have annoying issues for KiCad. Start msys so you have a bash shell. Note also since 2.9 versions no need to build a "debug" version of the wxWidgets library, -the release abd the debug version are same. +the release and the debug version are same. Unzip the wxWidgets zip file into the build directory. Change directories into there, and then: mkdir Release cd Release - ../configure --enable-unicode --enable-monolithic=no --disable-shared --with-opengl + ../configure --with-opengl make and under Linux, but not under Windows: sudo make install that install wxWidgets libs and headers in /usr/local/ -If on linux, you can use your package manager to install the -development versions of the wxWidgets packages which include the C++ headers. An -alternative is to build static libaries from source. Verify that wx-config is in -your path by running it from a command prompt. Linux users then go to next step. +On linux, yo can also download wxWidgets 3.0 (recommandedd) +or you can use your package manager to install the +development versions of the wxWidgets packages which include the C++ headers. +The recommended way is to build wxWidgets from source, and use wxWidgets 3.0 +or more recent (Older versions have a print function which does not work). +Verify that wx-config is in your path by running it from a command prompt. +Linux users then go to next step. Install CMake ------------- -If windows, download the installation binary for windows from cmake.org. +On windows, download the installation binary for windows from cmake.org. Install that and choose to add cmake to your path during installation. You -will have to restart and command shells for the new path to take effect. +will have to restart your command shell for the new path to take effect. Verify that cmake is in your path by trying to run it from a command prompt. -If linux, use your package manager to install cmake. You should get cmake 2.6.4 +On linux, use your package manager to install cmake. You should get cmake 2.8.4 or later. If only an older one is available in your package repository, build cmake from source. Verify that cmake is in your path by trying to run it from a command prompt. @@ -106,25 +116,42 @@ To download files from Launchpad repository, you should install bazaar (bzr) th version control system like subversion, mercurial, git... Launchpad repository handle 2 branches for KiCda sources: -- a testing branch (used by developers) -- a stable branch (a copy of the testing branch, when this testing branch is near a stable state)) +- a product branch (used by developers, which is most of time usable in production) +- a stable branch (a copy of the testing branch, + when the product branch is a stable state)) +Remarks: +- The product branch is actively maintained +- From the product branch, you can go back to any previous version, using bzr features +- The stable branch is poorly or not maintained (and could be removed) -Testing branch: -bzr branch lp:kicad kicad_testing +In order to have a working Kicad installtion, you need +- sources to build binaries +- libraries (they are not included in sources) +- documentation and translations (they are not included in sources) + +product branch: +bzr branch lp:kicad kicad_src Stable branch: -bzr branch lp:kicad/stable kicad_stable +bzr branch lp:kicad/stable kicad_src Components and Footprints libraries -bzr branch lp:~kicad-lib-committers/kicad/library kicad_libraries +all (schematic libs, 3D shapes ...) but new footprints libraries (use Download zip tool) +https://github.com/KiCad/kicad-library/ +New footprints libraries (use Download zip tool for each lib you want) +https://github.com/KiCad/ for footprint libs (*.pretty folders) + +Note also Kicad is able to read on github.com/KiCad/ the *.pretty folders +without download, using github plugin. +(however the time to read them can be long) Documentation and translations: bzr branch lp:~kicad-developers/kicad/doc kicad_doc Create Makefiles with CMake --------------------------- -If windows, go into your msys shell. Linux and windows users both then make -two "out of source" build directories: +On windows, go into your msys shell. +Linux and windows users both then make two "out of source" build directories: cd mkdir -p build/release mkdir build/debug (if you want a debug version of KiCad) @@ -133,10 +160,10 @@ two "out of source" build directories: On either cmake command line shown below, you can optionally include -DCMAKE_INSTALL_PREFIX= -If windows, run the following command: +On windows, run the following command: cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DwxWidgets_ROOT_DIR= ../../ -If linux, run instead the following command: +On linux, run instead the following command: cmake -DCMAKE_BUILD_TYPE=Release ../../ Take a look at CMakeCache.txt, and in particular CMAKE_INSTALL_PREFIX, which @@ -166,18 +193,15 @@ On either cmake command line shown below, you can optionally include Although normally you do not install the Debug binaries, you can debug them where they were built. -If windows, run the following command: +On windows, run the following command: cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Debug -DwxWidgets_ROOT_DIR= ../../ where is /Release -If linux, run instead the following command: +On linux, run instead the following command: cmake -DCMAKE_BUILD_TYPE=Debug -DwxWidgets_USE_DEBUG=ON ../../ Make the Debug binaries: make -Note: that it is easy to build only a specific binary such as pcbnew alone: - make pcbnew - See ./cmake_config.txt for customizing the KiCad build setting. diff --git a/common/edaappl.cpp b/common/edaappl.cpp index c4780b49f3..289abc3b2c 100644 --- a/common/edaappl.cpp +++ b/common/edaappl.cpp @@ -1249,6 +1249,18 @@ bool EDA_APP::Set3DShapesPath( const wxString& aKiSys3Dmod ) } #elif defined(__UNIX__) // Linux and non-Apple Unix + // Try the home directory: + path.Empty(); + wxGetEnv( wxT("${HOME}", &path ) + path += wxT("/kicad/share/") + relpath; + + if( wxFileName::DirExists( path ) ) + { + wxSetEnv( aKiSys3Dmod, path ); + return true; + } + + // Try the standard install path: path = wxT("/usr/local/kicad/share/") + relpath; if( wxFileName::DirExists( path ) ) { @@ -1256,6 +1268,7 @@ bool EDA_APP::Set3DShapesPath( const wxString& aKiSys3Dmod ) return true; } + // Try the official distrib standard install path: path = wxT("/usr/share/kicad/") + relpath; if( wxFileName::DirExists( path ) ) { @@ -1264,7 +1277,11 @@ bool EDA_APP::Set3DShapesPath( const wxString& aKiSys3Dmod ) } #else // Windows - path = m_BinDir + wxT("../share/") + relpath; + // On Windows, the install path is given by the path of executables + wxFileName fn; + fn.AssignDir( m_BinDir ); + fn.RemoveLastDir(); + path = fn.GetPathWithSep() + wxT("share/") + relpath; if( wxFileName::DirExists( path ) ) { diff --git a/pcbnew/dialogs/dialog_SVG_print.cpp b/pcbnew/dialogs/dialog_SVG_print.cpp index f8eec0ad5b..cfd0f4fa3b 100644 --- a/pcbnew/dialogs/dialog_SVG_print.cpp +++ b/pcbnew/dialogs/dialog_SVG_print.cpp @@ -269,7 +269,7 @@ void DIALOG_SVG_PRINT::ExportSVGFile( bool aOnlyOneFile ) if( aOnlyOneFile ) { m_printMaskLayer = printMaskLayer; - suffix = wxT( "-brd" ); + suffix = wxT( "brd" ); } else { diff --git a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.cpp b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.cpp index 1a66d7e21b..00c860a3fd 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.cpp +++ b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.cpp @@ -242,6 +242,13 @@ void DIALOG_MODULE_BOARD_EDITOR::InitModeditProperties() { SetFocus(); + wxString default_path; + wxGetEnv( wxT( KISYS3DMOD ), &default_path ); +#ifdef __WINDOWS__ + default_path.Replace( wxT( "/" ), wxT( "\\" ) ); +#endif + m_textCtrl3DDefaultPath->SetValue( default_path ); + m_LastSelected3DShapeIndex = -1; // Init 3D shape list @@ -449,18 +456,25 @@ void DIALOG_MODULE_BOARD_EDITOR::Browse3DLib( wxCommandEvent& event ) wxFileName fn = fullfilename; wxGetApp().SaveLastVisitedLibraryPath( fn.GetPath() ); - /* If the file path is already in the library search paths - * list, just add the library name to the list. Otherwise, add - * the library name with the full or relative path. + /* If the file path is already in the default search path + * list, just add the name to the list. Otherwise, add + * the name with the full or relative path. * the relative path, when possible is preferable, - * because it preserve use of default libraries paths, when the path is a - * sub path of these default paths + * because it preserve use of default search path, when the path is a + * sub path */ - shortfilename = - wxGetApp().ReturnFilenameWithRelativePathInLibPath( fullfilename ); - wxFileName aux = shortfilename; - if( aux.IsAbsolute() ) + wxString default_path; + wxGetEnv( wxT( KISYS3DMOD ), &default_path ); + fn.MakeRelativeTo( default_path ); + + // Here, we want a path relative only to the default_path + if( fn.GetPathWithSep().StartsWith( wxT("..") ) ) + fn = fullfilename; // keep the full file name + + shortfilename = fn.GetFullPath(); + + if( fn.IsAbsolute() ) { // Absolute path, ask if the user wants a relative one int diag = wxMessageBox( _( "Use a relative path?" ), @@ -469,8 +483,8 @@ void DIALOG_MODULE_BOARD_EDITOR::Browse3DLib( wxCommandEvent& event ) if( diag == wxYES ) { // Make it relative - aux.MakeRelativeTo( wxT(".") ); - shortfilename = aux.GetPathWithSep() + aux.GetFullName(); + fn.MakeRelativeTo( wxT(".") ); + shortfilename = fn.GetFullPath(); } } diff --git a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.cpp b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.cpp index 99efb9008e..ee0a156d12 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.cpp +++ b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.cpp @@ -309,7 +309,14 @@ DIALOG_MODULE_BOARD_EDITOR_BASE::DIALOG_MODULE_BOARD_EDITOR_BASE( wxWindow* pare bSizerMain3D->Add( m_staticText3Dname, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); m_3D_ShapeNameListBox = new wxListBox( m_Panel3D, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_SINGLE ); - bSizerMain3D->Add( m_3D_ShapeNameListBox, 0, wxALL|wxEXPAND, 5 ); + bSizerMain3D->Add( m_3D_ShapeNameListBox, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + m_staticTextDefault3DPath = new wxStaticText( m_Panel3D, wxID_ANY, _("Default Path (from KISYS3DMOD environment variable)"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextDefault3DPath->Wrap( -1 ); + bSizerMain3D->Add( m_staticTextDefault3DPath, 0, wxRIGHT|wxLEFT, 5 ); + + m_textCtrl3DDefaultPath = new wxTextCtrl( m_Panel3D, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY ); + bSizerMain3D->Add( m_textCtrl3DDefaultPath, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); wxBoxSizer* bLowerSizer3D; bLowerSizer3D = new wxBoxSizer( wxHORIZONTAL ); @@ -362,7 +369,7 @@ DIALOG_MODULE_BOARD_EDITOR_BASE::DIALOG_MODULE_BOARD_EDITOR_BASE( wxWindow* pare bLowerSizer3D->Add( bSizer3DButtons, 0, wxALIGN_CENTER_VERTICAL, 5 ); - bSizerMain3D->Add( bLowerSizer3D, 1, wxEXPAND, 5 ); + bSizerMain3D->Add( bLowerSizer3D, 0, wxEXPAND, 5 ); m_Panel3D->SetSizer( bSizerMain3D ); diff --git a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.fbp b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.fbp index 131c722600..032726aa21 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.fbp +++ b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.fbp @@ -97,7 +97,7 @@ 5 wxEXPAND | wxALL 1 - + 1 1 1 @@ -4336,11 +4336,11 @@ - + 3D settings 0 - + 1 1 1 @@ -4414,7 +4414,7 @@ - + bSizerMain3D wxVERTICAL @@ -4504,8 +4504,8 @@ 5 - wxALL|wxEXPAND - 0 + wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT + 1 1 1 @@ -4590,10 +4590,184 @@ + + 5 + wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Default Path (from KISYS3DMOD environment variable) + + 0 + + + 0 + + 1 + m_staticTextDefault3DPath + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + + 0 + + 1 + m_textCtrl3DDefaultPath + 1 + + + protected + 1 + + Resizable + 1 + + wxTE_READONLY + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 wxEXPAND - 1 + 0 bLowerSizer3D diff --git a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.h b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.h index 234f5b09f6..3a12366e63 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.h +++ b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.h @@ -106,6 +106,8 @@ class DIALOG_MODULE_BOARD_EDITOR_BASE : public DIALOG_SHIM wxPanel* m_Panel3D; wxStaticText* m_staticText3Dname; wxListBox* m_3D_ShapeNameListBox; + wxStaticText* m_staticTextDefault3DPath; + wxTextCtrl* m_textCtrl3DDefaultPath; wxBoxSizer* m_bSizerShapeScale; wxStaticText* m_staticTextShapeScale; wxBoxSizer* m_bSizerShapeOffset; diff --git a/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp b/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp index 0b97c21f0e..169e4e6c9a 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp +++ b/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp @@ -7,10 +7,10 @@ /* * 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 Dick Hollenbeck, dick@softplc.com - * Copyright (C) 2008-2013 Wayne Stambaugh - * Copyright (C) 2004-2013 KiCad Developers, see change_log.txt for contributors. + * Copyright (C) 2014 Jean-Pierre Charras, jp.charras at wanadoo.fr + * Copyright (C) 2014 Dick Hollenbeck, dick@softplc.com + * Copyright (C) 2008-2014 Wayne Stambaugh + * Copyright (C) 2004-2014 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 @@ -91,6 +91,14 @@ void DIALOG_MODULE_MODULE_EDITOR::initModeditProperties() { SetFocus(); + // Display the default path, given by environment variable KISYS3DMOD + wxString default_path; + wxGetEnv( wxT( KISYS3DMOD ), &default_path ); +#ifdef __WINDOWS__ + default_path.Replace( wxT( "/" ), wxT( "\\" ) ); +#endif + m_textCtrl3DDefaultPath->SetValue( default_path ); + m_lastSelected3DShapeIndex = -1; // Init 3D shape list @@ -313,17 +321,25 @@ void DIALOG_MODULE_MODULE_EDITOR::BrowseAndAdd3DLib( wxCommandEvent& event ) wxFileName fn = fullfilename; wxGetApp().SaveLastVisitedLibraryPath( fn.GetPath() ); - /* If the file path is already in the library search paths - * list, just add the library name to the list. Otherwise, add - * the library name with the full or relative path. + /* If the file path is already in the default search path + * list, just add the name to the list. Otherwise, add + * the name with the full or relative path. * the relative path, when possible is preferable, - * because it preserve use of default libraries paths, when the path is a sub path of these default paths + * because it preserve use of default search path, when the path is a + * sub path */ - shortfilename = wxGetApp().ReturnFilenameWithRelativePathInLibPath( fullfilename ); - wxFileName aux = shortfilename; + wxString default_path; + wxGetEnv( wxT( KISYS3DMOD ), &default_path ); + fn.MakeRelativeTo( default_path ); - if( aux.IsAbsolute() ) + // Here, we want a path relative only to the default_path + if( fn.GetPathWithSep().StartsWith( wxT("..") ) ) + fn = fullfilename; // keep the full file name + + shortfilename = fn.GetFullPath(); + + if( fn.IsAbsolute() ) { // Absolute path, ask if the user wants a relative one int diag = wxMessageBox( _( "Use a relative path?" ), @@ -332,8 +348,8 @@ void DIALOG_MODULE_MODULE_EDITOR::BrowseAndAdd3DLib( wxCommandEvent& event ) if( diag == wxYES ) { // Make it relative - aux.MakeRelativeTo( wxT( "." ) ); - shortfilename = aux.GetPathWithSep() + aux.GetFullName(); + fn.MakeRelativeTo( wxT( "." ) ); + shortfilename = fn.GetFullPath(); } } diff --git a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.cpp b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.cpp index fd62e5b8da..093a513828 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.cpp +++ b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 8 2012) +// C++ code generated with wxFormBuilder (version Nov 6 2013) // http://www.wxformbuilder.org/ // // PLEASE DO "NOT" EDIT THIS FILE! @@ -238,12 +238,19 @@ DIALOG_MODULE_MODULE_EDITOR_BASE::DIALOG_MODULE_MODULE_EDITOR_BASE( wxWindow* pa wxBoxSizer* bSizerMain3D; bSizerMain3D = new wxBoxSizer( wxVERTICAL ); - m_staticText3Dname = new wxStaticText( m_Panel3D, wxID_ANY, _("3D Shape Name"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText3Dname = new wxStaticText( m_Panel3D, wxID_ANY, _("3D Shape Names"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText3Dname->Wrap( -1 ); bSizerMain3D->Add( m_staticText3Dname, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); m_3D_ShapeNameListBox = new wxListBox( m_Panel3D, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_SINGLE ); - bSizerMain3D->Add( m_3D_ShapeNameListBox, 0, wxALL|wxEXPAND, 5 ); + bSizerMain3D->Add( m_3D_ShapeNameListBox, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + m_staticTextDefault3DPath = new wxStaticText( m_Panel3D, wxID_ANY, _("Default Path (from KISYS3DMOD environment variable)"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextDefault3DPath->Wrap( -1 ); + bSizerMain3D->Add( m_staticTextDefault3DPath, 0, wxRIGHT|wxLEFT, 5 ); + + m_textCtrl3DDefaultPath = new wxTextCtrl( m_Panel3D, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY ); + bSizerMain3D->Add( m_textCtrl3DDefaultPath, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); wxBoxSizer* bLowerSizer3D; bLowerSizer3D = new wxBoxSizer( wxHORIZONTAL ); @@ -293,7 +300,7 @@ DIALOG_MODULE_MODULE_EDITOR_BASE::DIALOG_MODULE_MODULE_EDITOR_BASE( wxWindow* pa bLowerSizer3D->Add( bSizer3DButtons, 0, wxALIGN_CENTER_VERTICAL, 5 ); - bSizerMain3D->Add( bLowerSizer3D, 1, wxALL|wxEXPAND, 5 ); + bSizerMain3D->Add( bLowerSizer3D, 0, wxALL|wxEXPAND, 5 ); m_Panel3D->SetSizer( bSizerMain3D ); diff --git a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.fbp b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.fbp index aa3c448b54..f78792055f 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.fbp +++ b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.fbp @@ -20,8 +20,10 @@ . 1 + 1 1 1 + UI 0 0 @@ -177,7 +179,7 @@ Properties 1 - + 1 1 1 @@ -251,16 +253,16 @@ - + m_PanelPropertiesBoxSizer wxHORIZONTAL none - + 5 wxEXPAND|wxLEFT|wxRIGHT|wxTOP 1 - + wxID_ANY Fields @@ -268,11 +270,11 @@ wxVERTICAL none - + 5 wxTOP|wxRIGHT|wxLEFT 0 - + 1 1 1 @@ -351,11 +353,11 @@ - + 5 wxBOTTOM|wxLEFT|wxRIGHT|wxEXPAND 0 - + 1 1 1 @@ -442,11 +444,11 @@ - + 5 wxTOP|wxRIGHT|wxLEFT 0 - + 1 1 1 @@ -525,11 +527,11 @@ - + 5 wxBOTTOM|wxLEFT|wxRIGHT|wxEXPAND 0 - + 1 1 1 @@ -616,11 +618,11 @@ - + 5 wxTOP|wxRIGHT|wxLEFT 0 - + 1 1 1 @@ -699,20 +701,20 @@ - + 5 wxEXPAND 0 - + bSizerRef wxHORIZONTAL none - + 5 wxBOTTOM|wxLEFT|wxRIGHT 1 - + 1 1 1 @@ -799,11 +801,11 @@ - + 5 wxBOTTOM|wxRIGHT 0 - + 1 1 1 @@ -889,11 +891,11 @@ - + 5 wxTOP|wxRIGHT|wxLEFT 0 - + 1 1 1 @@ -972,20 +974,20 @@ - + 5 wxEXPAND 0 - + bSizerVal wxHORIZONTAL none - + 5 wxBOTTOM|wxLEFT|wxRIGHT 1 - + 1 1 1 @@ -1072,11 +1074,11 @@ - + 5 wxBOTTOM|wxRIGHT 0 - + 1 1 1 @@ -1162,21 +1164,21 @@ - + 5 0 - + 20 protected 0 - + 5 wxTOP|wxRIGHT|wxLEFT 0 - + 1 1 1 @@ -1255,11 +1257,11 @@ - + 5 wxBOTTOM|wxLEFT|wxRIGHT|wxEXPAND 0 - + 1 1 1 @@ -1346,11 +1348,11 @@ - + 5 wxEXPAND 0 - + 0 protected 0 @@ -1358,29 +1360,29 @@ - + 5 0 - + m_PropRightSizer wxVERTICAL private - + 5 wxEXPAND 0 - + bSizerAttrib wxHORIZONTAL none - + 5 wxALL|wxEXPAND 1 - + 1 1 1 @@ -1466,11 +1468,11 @@ - + 5 wxALL|wxEXPAND 1 - + 1 1 1 @@ -1558,11 +1560,11 @@ - + 5 wxEXPAND|wxALL 0 - + wxID_ANY Auto Place @@ -1570,20 +1572,20 @@ wxHORIZONTAL none - + 5 1 - + bSizerRot90 wxVERTICAL none - + 5 wxALIGN_CENTER_HORIZONTAL|wxALL 0 - + 1 1 1 @@ -1662,11 +1664,11 @@ - + 5 wxEXPAND|wxRIGHT|wxLEFT 0 - + 1 1 1 @@ -1772,20 +1774,20 @@ - + 5 1 - + bSizerRot180 wxVERTICAL none - + 5 wxALIGN_CENTER_HORIZONTAL|wxALL 0 - + 1 1 1 @@ -1864,11 +1866,11 @@ - + 5 wxEXPAND|wxRIGHT|wxLEFT 0 - + 1 1 1 @@ -1976,11 +1978,11 @@ - + 5 wxEXPAND|wxALL 0 - + wxID_ANY Local Clearance Values @@ -1988,11 +1990,11 @@ wxVERTICAL none - + 5 wxALL 0 - + 1 1 1 @@ -2071,11 +2073,11 @@ - + 5 wxEXPAND 1 - + 3 wxBOTH 1 @@ -2087,11 +2089,11 @@ none 5 0 - + 5 wxLEFT|wxALIGN_CENTER_VERTICAL 0 - + 1 1 1 @@ -2170,11 +2172,11 @@ - + 5 wxALL|wxEXPAND 0 - + 1 1 1 @@ -2261,11 +2263,11 @@ - + 5 wxRIGHT|wxALIGN_CENTER_VERTICAL 0 - + 1 1 1 @@ -2344,11 +2346,11 @@ - + 5 wxEXPAND 0 - + 1 1 1 @@ -2425,11 +2427,11 @@ - + 5 wxEXPAND 0 - + 1 1 1 @@ -2506,11 +2508,11 @@ - + 5 wxEXPAND 0 - + 1 1 1 @@ -2587,11 +2589,11 @@ - + 5 wxALIGN_CENTER_VERTICAL|wxLEFT 0 - + 1 1 1 @@ -2670,11 +2672,11 @@ - + 5 wxALL|wxEXPAND 0 - + 1 1 1 @@ -2761,11 +2763,11 @@ - + 5 wxALIGN_CENTER_VERTICAL|wxRIGHT 0 - + 1 1 1 @@ -2844,11 +2846,11 @@ - + 5 wxALIGN_CENTER_VERTICAL|wxLEFT 0 - + 1 1 1 @@ -2927,11 +2929,11 @@ - + 5 wxTOP|wxRIGHT|wxLEFT|wxEXPAND 0 - + 1 1 1 @@ -3018,11 +3020,11 @@ - + 5 wxALIGN_CENTER_VERTICAL|wxRIGHT 0 - + 1 1 1 @@ -3101,11 +3103,11 @@ - + 5 wxALIGN_CENTER_VERTICAL|wxLEFT 0 - + 1 1 1 @@ -3184,11 +3186,11 @@ - + 5 wxALL|wxEXPAND 0 - + 1 1 1 @@ -3275,11 +3277,11 @@ - + 5 wxALIGN_CENTER_VERTICAL|wxRIGHT 0 - + 1 1 1 @@ -3482,7 +3484,7 @@ 0 0 wxID_ANY - 3D Shape Name + 3D Shape Names 0 @@ -3535,8 +3537,8 @@ 5 - wxALL|wxEXPAND - 0 + wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT + 1 1 1 @@ -3621,20 +3623,194 @@ + + 5 + wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Default Path (from KISYS3DMOD environment variable) + + 0 + + + 0 + + 1 + m_staticTextDefault3DPath + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + + 0 + + 1 + m_textCtrl3DDefaultPath + 1 + + + protected + 1 + + Resizable + 1 + + wxTE_READONLY + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 wxALL|wxEXPAND - 1 - + 0 + bLowerSizer3D wxHORIZONTAL none - + 5 wxEXPAND 1 - + wxID_ANY 3D Scale and Position @@ -3642,20 +3818,20 @@ wxVERTICAL protected - + 5 wxEXPAND 0 - + m_bSizerShapeScale wxVERTICAL protected - + 5 wxTOP|wxRIGHT|wxLEFT 0 - + 1 1 1 @@ -3736,20 +3912,20 @@ - + 5 wxEXPAND 0 - + m_bSizerShapeOffset wxVERTICAL protected - + 5 wxTOP|wxRIGHT|wxLEFT 0 - + 1 1 1 @@ -3830,20 +4006,20 @@ - + 5 wxEXPAND 0 - + m_bSizerShapeRotation wxVERTICAL protected - + 5 wxTOP|wxRIGHT|wxLEFT 0 - + 1 1 1 @@ -3926,20 +4102,20 @@ - + 5 wxALIGN_CENTER_VERTICAL 0 - + bSizer3DButtons wxVERTICAL none - + 5 wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND 0 - + 1 1 1 @@ -4023,11 +4199,11 @@ - + 5 wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND 0 - + 1 1 1 diff --git a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.h b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.h index 9491f0b965..839854b525 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.h +++ b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 8 2012) +// C++ code generated with wxFormBuilder (version Nov 6 2013) // http://www.wxformbuilder.org/ // // PLEASE DO "NOT" EDIT THIS FILE! @@ -90,6 +90,8 @@ class DIALOG_MODULE_MODULE_EDITOR_BASE : public DIALOG_SHIM wxPanel* m_Panel3D; wxStaticText* m_staticText3Dname; wxListBox* m_3D_ShapeNameListBox; + wxStaticText* m_staticTextDefault3DPath; + wxTextCtrl* m_textCtrl3DDefaultPath; wxStaticBoxSizer* m_Sizer3DValues; wxBoxSizer* m_bSizerShapeScale; wxStaticText* m_staticTextShapeScale; From 81c84fcac515c0a936ff1da6989f8ca1bda780b5 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Mon, 10 Feb 2014 10:58:17 +0100 Subject: [PATCH 15/18] fix linux compil. --- common/edaappl.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/common/edaappl.cpp b/common/edaappl.cpp index 289abc3b2c..eb5b54bdd3 100644 --- a/common/edaappl.cpp +++ b/common/edaappl.cpp @@ -1251,7 +1251,7 @@ bool EDA_APP::Set3DShapesPath( const wxString& aKiSys3Dmod ) #elif defined(__UNIX__) // Linux and non-Apple Unix // Try the home directory: path.Empty(); - wxGetEnv( wxT("${HOME}", &path ) + wxGetEnv( wxT("HOME"), &path ); path += wxT("/kicad/share/") + relpath; if( wxFileName::DirExists( path ) ) @@ -1262,6 +1262,7 @@ bool EDA_APP::Set3DShapesPath( const wxString& aKiSys3Dmod ) // Try the standard install path: path = wxT("/usr/local/kicad/share/") + relpath; + if( wxFileName::DirExists( path ) ) { wxSetEnv( aKiSys3Dmod, path ); @@ -1270,6 +1271,7 @@ bool EDA_APP::Set3DShapesPath( const wxString& aKiSys3Dmod ) // Try the official distrib standard install path: path = wxT("/usr/share/kicad/") + relpath; + if( wxFileName::DirExists( path ) ) { wxSetEnv( aKiSys3Dmod, path ); From 29dcb49c62e6302bc1a37e14f65d065b5d44a6af Mon Sep 17 00:00:00 2001 From: Lorenzo Marcantonio Date: Mon, 10 Feb 2014 18:19:15 +0100 Subject: [PATCH 16/18] - Do not autonumber NPTH pads on add in module editor (keep the number blank) Factored out the next-pad-number function --- pcbnew/pad_edition_functions.cpp | 49 ++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/pcbnew/pad_edition_functions.cpp b/pcbnew/pad_edition_functions.cpp index b99bd1580a..27ea996d8f 100644 --- a/pcbnew/pad_edition_functions.cpp +++ b/pcbnew/pad_edition_functions.cpp @@ -123,14 +123,34 @@ void PCB_BASE_FRAME::Import_Pad_Settings( D_PAD* aPad, bool aDraw ) aPad->GetParent()->SetLastEditTime(); } +/** Compute the 'next' pad number for autoincrement + * aPadName is the last pad name used */ +static wxString GetNextPadName( wxString aPadName ) +{ + // Automatically increment the current pad number. + int num = 0; + int ponder = 1; + + // Trim and extract the trailing numeric part + while( aPadName.Len() + && aPadName.Last() >= '0' + && aPadName.Last() <= '9' ) + { + num += ( aPadName.Last() - '0' ) * ponder; + aPadName.RemoveLast(); + ponder *= 10; + } + + num++; // Use next number for the new pad + aPadName << num; + + return aPadName; +} /* Add a new pad to aModule. */ void PCB_BASE_FRAME::AddPad( MODULE* aModule, bool draw ) { - // Last used pad name (pad num) - wxString lastPadName = GetDesignSettings().m_Pad_Master.GetPadName(); - m_Pcb->m_Status_Pcb = 0; aModule->SetLastEditTime(); @@ -152,22 +172,15 @@ void PCB_BASE_FRAME::AddPad( MODULE* aModule, bool draw ) RotatePoint( &pos0, -aModule->GetOrientation() ); pad->SetPos0( pos0 ); - // Automatically increment the current pad number. - long num = 0; - int ponder = 1; - - while( lastPadName.Len() && lastPadName.Last() >= '0' && lastPadName.Last() <= '9' ) - { - num += ( lastPadName.Last() - '0' ) * ponder; - lastPadName.RemoveLast(); - ponder *= 10; + /* NPTH pads take empty pad number (since they can't be connected), + * other pads get incremented from the last one edited */ + wxString padName; + if( pad->GetAttribute() != PAD_HOLE_NOT_PLATED ) { + padName = GetNextPadName( GetDesignSettings() + .m_Pad_Master.GetPadName() ); } - - num++; // Use next number for the new pad - lastPadName << num; - pad->SetPadName( lastPadName ); - - GetDesignSettings().m_Pad_Master.SetPadName(lastPadName); + pad->SetPadName( padName ); + GetDesignSettings().m_Pad_Master.SetPadName( padName ); aModule->CalculateBoundingBox(); SetMsgPanel( pad ); From 7061d6c2a556eacf03b21b8aeaab0aa9a9b7448b Mon Sep 17 00:00:00 2001 From: Fabrizio Tappero Date: Tue, 11 Feb 2014 19:32:09 +0100 Subject: [PATCH 17/18] Icon update, and an other very minor fix. --- bitmaps_png/CMakeLists.txt | 1 + bitmaps_png/cpp_26/add_dashed_line.cpp | 42 +- bitmaps_png/cpp_26/annotate.cpp | 94 +- bitmaps_png/cpp_26/datasheet.cpp | 199 ++- bitmaps_png/cpp_26/hidden_pin.cpp | 59 +- bitmaps_png/cpp_26/import_footprint_names.cpp | 166 +- bitmaps_png/cpp_26/py_script.cpp | 100 ++ bitmaps_png/sources/add_dashed_line.svg | 35 +- bitmaps_png/sources/annotate.svg | 79 +- bitmaps_png/sources/datasheet.svg | 103 +- bitmaps_png/sources/hidden_pin.svg | 76 +- .../sources/import_footprint_names.svg | 1385 ++++------------- bitmaps_png/sources/py_script.svg | 43 +- include/bitmaps.h | 1 + pcbnew/hotkeys.h | 2 +- 15 files changed, 851 insertions(+), 1534 deletions(-) create mode 100644 bitmaps_png/cpp_26/py_script.cpp diff --git a/bitmaps_png/CMakeLists.txt b/bitmaps_png/CMakeLists.txt index 75976e635a..944a5450fb 100644 --- a/bitmaps_png/CMakeLists.txt +++ b/bitmaps_png/CMakeLists.txt @@ -446,6 +446,7 @@ set( BMAPS_MID preference print_button ps_router + py_script ratsnest read_setup redo diff --git a/bitmaps_png/cpp_26/add_dashed_line.cpp b/bitmaps_png/cpp_26/add_dashed_line.cpp index 7e6bfcf752..e2db0b9363 100644 --- a/bitmaps_png/cpp_26/add_dashed_line.cpp +++ b/bitmaps_png/cpp_26/add_dashed_line.cpp @@ -8,26 +8,28 @@ static const unsigned char png[] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c, - 0xce, 0x00, 0x00, 0x01, 0x26, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0xf8, 0xff, 0xff, 0x3f, - 0x03, 0x3d, 0x30, 0x55, 0x0d, 0x6b, 0x68, 0x68, 0x60, 0x49, 0xc9, 0x4c, 0xc9, 0x4e, 0xce, 0x49, - 0x79, 0x08, 0xc2, 0x20, 0x36, 0x48, 0x8c, 0xea, 0x16, 0x81, 0x0c, 0x8e, 0xaa, 0x8c, 0xfb, 0x6a, - 0xb1, 0xd6, 0xed, 0x3f, 0x08, 0x83, 0xd8, 0x20, 0x31, 0xaa, 0x5b, 0x04, 0xf2, 0x05, 0xc8, 0x02, - 0xad, 0x43, 0x36, 0x60, 0x0c, 0x62, 0x83, 0xc4, 0x86, 0xa6, 0x45, 0x0c, 0x0c, 0x17, 0xc5, 0x0c, - 0x8c, 0xe6, 0xde, 0x0f, 0x2f, 0x4d, 0xfa, 0x4b, 0xb3, 0xa0, 0x63, 0x60, 0x38, 0x27, 0xca, 0xc0, - 0x70, 0xe1, 0x04, 0x13, 0xd3, 0xb9, 0x0f, 0x06, 0xc6, 0x73, 0xee, 0xd2, 0x24, 0x31, 0x30, 0x30, - 0x9c, 0x11, 0x61, 0x60, 0x38, 0x7f, 0x02, 0x88, 0x3f, 0x80, 0x2c, 0x03, 0xf9, 0x8c, 0x26, 0xc9, - 0x1b, 0xe8, 0x9b, 0x76, 0x88, 0x25, 0x20, 0xcb, 0xce, 0x89, 0xd2, 0x2c, 0x1f, 0x01, 0x7d, 0x64, - 0x0e, 0xf4, 0x49, 0x0f, 0xc8, 0x67, 0x54, 0xcf, 0xb0, 0xd0, 0xe0, 0x0a, 0x05, 0xd2, 0xac, 0x34, - 0x2b, 0x19, 0x40, 0x71, 0x00, 0xb4, 0xe4, 0x24, 0x24, 0xb8, 0xce, 0x85, 0xd0, 0xc4, 0x22, 0x58, - 0xea, 0x82, 0xc6, 0x09, 0xd0, 0xb2, 0xab, 0x42, 0x54, 0xb7, 0x08, 0x18, 0x4c, 0x5c, 0x40, 0x8b, - 0x8e, 0x13, 0x4a, 0x5d, 0x54, 0xb0, 0xe8, 0xbc, 0x29, 0x34, 0xb8, 0x8e, 0xe3, 0x4b, 0x5d, 0x54, - 0x0a, 0xba, 0xf3, 0x56, 0x40, 0x2c, 0x40, 0xf5, 0x6a, 0x02, 0x9a, 0xba, 0xe6, 0x31, 0x30, 0x9c, - 0x0d, 0xa7, 0x59, 0x7d, 0x04, 0xb1, 0xe4, 0xdc, 0x31, 0x68, 0xc4, 0xcf, 0xa6, 0x89, 0x45, 0xa8, - 0x96, 0x80, 0x68, 0xfc, 0x99, 0x91, 0x68, 0x8b, 0xd0, 0x6b, 0x46, 0x63, 0xd3, 0x99, 0x57, 0x40, - 0x05, 0x24, 0xb5, 0x2c, 0x81, 0x5b, 0x84, 0x5e, 0x33, 0x86, 0x97, 0x26, 0xfc, 0x31, 0x34, 0x99, - 0x7d, 0x93, 0x5a, 0x96, 0xc0, 0x2d, 0xc2, 0x57, 0x61, 0x0d, 0x4d, 0x8b, 0xf0, 0x35, 0x2a, 0xa8, - 0x6a, 0x11, 0xbe, 0x66, 0xd2, 0xa0, 0x6c, 0xd7, 0xe1, 0xc3, 0x00, 0x42, 0x71, 0x3f, 0x3f, 0xa1, - 0x5f, 0x72, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, + 0xce, 0x00, 0x00, 0x01, 0x3f, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x95, 0xbd, 0x4a, 0x03, + 0x41, 0x14, 0x46, 0x4f, 0x82, 0x88, 0x22, 0x58, 0x0b, 0x36, 0x96, 0x22, 0x16, 0x06, 0x7f, 0x48, + 0xa5, 0x22, 0x88, 0xfa, 0x0e, 0x56, 0xbe, 0x4a, 0x1a, 0x0b, 0x1b, 0x1f, 0x42, 0xb0, 0xb2, 0xf1, + 0x01, 0xb6, 0xb1, 0x08, 0xe8, 0xce, 0xbd, 0x2b, 0x2e, 0xd8, 0xa8, 0x68, 0x14, 0xa3, 0x8d, 0xbe, + 0xc1, 0x58, 0x64, 0x75, 0x43, 0xb2, 0xab, 0x71, 0x76, 0xa6, 0x18, 0x66, 0x60, 0x67, 0x38, 0x7c, + 0x73, 0x76, 0xee, 0xc5, 0x5a, 0x4b, 0xa8, 0x01, 0x57, 0xf3, 0x3f, 0xeb, 0x70, 0x90, 0xeb, 0x3d, + 0x90, 0x77, 0x30, 0xad, 0x60, 0xa0, 0x1c, 0x22, 0x9f, 0x20, 0x0f, 0xa0, 0xb3, 0x81, 0x40, 0xe6, + 0x00, 0xe4, 0x03, 0xe4, 0x1e, 0x92, 0x45, 0xef, 0x89, 0x20, 0x99, 0xca, 0xd7, 0xba, 0x0f, 0x66, + 0xc1, 0xbb, 0x23, 0x90, 0x6d, 0xd0, 0x3b, 0x48, 0x9a, 0x85, 0xdf, 0xfd, 0x40, 0xe2, 0x1d, 0x90, + 0xb7, 0xcc, 0xc9, 0x0d, 0xa4, 0xe3, 0xde, 0x41, 0x90, 0xec, 0xf6, 0x89, 0x7f, 0x04, 0x59, 0x0a, + 0x92, 0x08, 0xf4, 0xb0, 0x07, 0x31, 0x4f, 0xa0, 0x8d, 0xd2, 0x7d, 0xee, 0x80, 0x68, 0xac, 0x37, + 0xdb, 0x1a, 0x98, 0x16, 0xc4, 0xcb, 0xbf, 0xee, 0x77, 0x74, 0xb2, 0x05, 0x72, 0x09, 0x32, 0x37, + 0xf2, 0x19, 0x87, 0xbf, 0x6b, 0x13, 0xb4, 0x9b, 0x39, 0x69, 0x83, 0xad, 0x7b, 0x07, 0x81, 0xd9, + 0x00, 0xe9, 0xe6, 0x4e, 0xcc, 0x4a, 0x90, 0x44, 0xa0, 0xa7, 0x2e, 0x10, 0x07, 0x50, 0x67, 0x12, + 0xe4, 0xe4, 0xbf, 0x90, 0x91, 0x40, 0x60, 0xd6, 0x41, 0xce, 0xa1, 0x3d, 0x5d, 0xe9, 0x19, 0xfc, + 0x0d, 0x31, 0xaf, 0x99, 0xf8, 0xb3, 0x20, 0xa0, 0x01, 0x48, 0x07, 0x64, 0xd5, 0x3b, 0x08, 0x6c, + 0x1d, 0xe4, 0x22, 0x83, 0x3c, 0x83, 0xae, 0x55, 0xae, 0x20, 0xe5, 0x89, 0xd2, 0x19, 0x90, 0x08, + 0xe2, 0xa6, 0x97, 0xc2, 0x3b, 0x7c, 0x5d, 0x7a, 0xfc, 0xfd, 0x08, 0xc1, 0xd6, 0xbc, 0xb5, 0x91, + 0x62, 0x27, 0x7a, 0xe4, 0xbd, 0xeb, 0x16, 0x88, 0x7f, 0x29, 0x6b, 0x5e, 0xd5, 0xaa, 0x3c, 0xd1, + 0x04, 0xe8, 0x6d, 0x48, 0x48, 0x5f, 0x22, 0x6d, 0x80, 0xa4, 0xa1, 0x20, 0x03, 0x8e, 0x86, 0xdb, + 0xaf, 0xcf, 0xf1, 0x05, 0x56, 0x13, 0x40, 0xc7, 0xbb, 0x6a, 0xb9, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, }; const BITMAP_OPAQUE add_dashed_line_xpm[1] = {{ png, sizeof( png ), "add_dashed_line_xpm" }}; diff --git a/bitmaps_png/cpp_26/annotate.cpp b/bitmaps_png/cpp_26/annotate.cpp index 3a22a66202..ac0d65c1a4 100644 --- a/bitmaps_png/cpp_26/annotate.cpp +++ b/bitmaps_png/cpp_26/annotate.cpp @@ -8,54 +8,52 @@ static const unsigned char png[] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c, - 0xce, 0x00, 0x00, 0x02, 0xe2, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x96, 0x5b, 0x68, 0x13, - 0x41, 0x14, 0x86, 0xd7, 0x35, 0x97, 0x26, 0x16, 0x5a, 0xac, 0x34, 0x4d, 0x91, 0x5a, 0x11, 0xf1, - 0x82, 0x8a, 0x08, 0x82, 0x4f, 0xd2, 0x87, 0x3e, 0x08, 0x22, 0xa2, 0x88, 0x88, 0x60, 0x0b, 0x21, - 0x2f, 0x51, 0xac, 0x28, 0xda, 0x17, 0x2d, 0xc4, 0xc4, 0x58, 0x31, 0xb5, 0x3e, 0x08, 0x56, 0xac, - 0x77, 0x31, 0xa8, 0x50, 0xaa, 0x34, 0xc6, 0x14, 0x5a, 0x51, 0x44, 0x5a, 0x52, 0x41, 0x04, 0xa1, - 0xf6, 0x41, 0x4a, 0x1f, 0x82, 0x84, 0x5a, 0x8c, 0x97, 0x62, 0x62, 0x85, 0xf1, 0x3f, 0xc9, 0x49, - 0x19, 0xb7, 0xd9, 0xc4, 0x4d, 0xc5, 0x85, 0x8f, 0x99, 0x9d, 0xdd, 0x99, 0x7f, 0xfe, 0x39, 0xb3, - 0x73, 0x56, 0x11, 0x42, 0x28, 0xff, 0x03, 0x63, 0x2f, 0x2b, 0xca, 0x25, 0xb0, 0x5d, 0xba, 0x1f, - 0x00, 0x6f, 0xc0, 0x0d, 0x50, 0xc7, 0x6d, 0x4e, 0xf0, 0x04, 0x8c, 0x82, 0xeb, 0xc0, 0x66, 0x48, - 0x08, 0x97, 0x09, 0xbc, 0xa4, 0xce, 0x52, 0x5b, 0x94, 0xcb, 0x5d, 0x20, 0xc8, 0xf5, 0x7b, 0xc0, - 0x05, 0x16, 0x82, 0x9d, 0xa0, 0xc6, 0xa8, 0xd0, 0x56, 0x70, 0x1c, 0xf4, 0xe7, 0x11, 0x5a, 0x09, - 0xae, 0x72, 0xfd, 0xe9, 0xbc, 0x96, 0x0e, 0xd7, 0x59, 0xb0, 0x01, 0x74, 0x52, 0xc9, 0x6d, 0x1f, - 0xc0, 0x30, 0xf8, 0x08, 0xd6, 0x80, 0x55, 0xe0, 0xf2, 0x5f, 0x09, 0x79, 0x15, 0xc5, 0xae, 0x23, - 0x34, 0x08, 0x56, 0x03, 0x0f, 0x68, 0xe5, 0xb6, 0x7e, 0x50, 0x06, 0x1a, 0x40, 0x88, 0x96, 0x09, - 0xdc, 0x2d, 0x2a, 0x14, 0x50, 0x14, 0x87, 0xcf, 0x64, 0x9a, 0x0e, 0xd8, 0x6c, 0x3d, 0x10, 0x5c, - 0x22, 0x89, 0x38, 0x38, 0xb8, 0xf7, 0x99, 0xb0, 0xbc, 0x74, 0x5c, 0x1f, 0xe2, 0x32, 0x52, 0x54, - 0x08, 0x83, 0xd7, 0x03, 0x71, 0xab, 0xb1, 0x31, 0x75, 0xc6, 0x6a, 0x4d, 0xa2, 0xbe, 0x9b, 0x3b, - 0x1f, 0xa0, 0x00, 0x4b, 0x83, 0xf6, 0x81, 0x72, 0xf0, 0x0a, 0x6c, 0x03, 0xa7, 0xa4, 0x18, 0x5d, - 0x00, 0x77, 0xc0, 0x16, 0x70, 0x11, 0x2c, 0xd3, 0x15, 0x4a, 0xa7, 0xd3, 0x62, 0xa4, 0xbb, 0x5b, - 0x04, 0xec, 0xf6, 0x34, 0xb9, 0xab, 0xca, 0x0a, 0xd5, 0x4a, 0x42, 0x34, 0x78, 0x3d, 0x38, 0x09, - 0xce, 0x81, 0xfd, 0xb3, 0xdb, 0x38, 0xbb, 0x3b, 0x4f, 0x80, 0xdb, 0x60, 0x5f, 0x41, 0x47, 0x24, - 0x44, 0x7c, 0x1a, 0x1f, 0x9f, 0xe3, 0xae, 0xe4, 0x0f, 0x16, 0x03, 0xa8, 0xa0, 0x92, 0xf0, 0x29, - 0xca, 0x7a, 0x59, 0x28, 0x87, 0xec, 0x4e, 0x8e, 0x9d, 0x51, 0xa1, 0x00, 0x0d, 0x2e, 0xa3, 0x15, - 0xfa, 0x17, 0xee, 0x48, 0xc8, 0x94, 0xcf, 0x51, 0xac, 0xab, 0x4b, 0xf8, 0xad, 0xd6, 0x59, 0xfa, - 0x3c, 0x9e, 0x79, 0xb9, 0x2b, 0x18, 0x23, 0x3d, 0x34, 0xee, 0xf6, 0xe4, 0x26, 0xda, 0xc9, 0x1b, - 0xa2, 0x24, 0xa1, 0x67, 0x5e, 0xaf, 0xae, 0xe0, 0x23, 0xb7, 0x5b, 0x68, 0x96, 0x7d, 0xa2, 0x64, - 0x21, 0x5a, 0x36, 0xad, 0xc0, 0xb7, 0xa9, 0x29, 0xf1, 0xd8, 0xed, 0x9e, 0xc1, 0xc7, 0x9d, 0xf6, - 0xaa, 0x6a, 0x2b, 0xfa, 0x2c, 0x66, 0x57, 0x65, 0x85, 0x62, 0x54, 0x0e, 0x6a, 0x98, 0x8d, 0x39, - 0xa1, 0x48, 0x4b, 0x8b, 0x68, 0xaf, 0xa8, 0xc8, 0xcc, 0x94, 0xca, 0xc1, 0xb6, 0xb6, 0x4c, 0xfb, - 0x58, 0x34, 0x2a, 0x3a, 0x9c, 0xce, 0x1f, 0x88, 0xd3, 0x6b, 0x3f, 0x0e, 0x53, 0x23, 0x9b, 0xe1, - 0x9d, 0x64, 0xfd, 0x7b, 0x4e, 0x68, 0x3a, 0x99, 0x14, 0x5f, 0x12, 0x09, 0xe1, 0xb7, 0x58, 0x32, - 0xe5, 0xe7, 0x78, 0x5c, 0xf4, 0xba, 0x5c, 0x33, 0x3e, 0xb3, 0x39, 0x7d, 0x5a, 0x55, 0x8f, 0xd2, - 0x67, 0x61, 0x68, 0xd7, 0x3d, 0x44, 0xde, 0x20, 0xcb, 0x04, 0x66, 0xb8, 0x42, 0xbb, 0x74, 0x6f, - 0x43, 0x21, 0xf1, 0x3e, 0x12, 0x11, 0x41, 0x87, 0x83, 0x5c, 0xc4, 0x16, 0x65, 0xf3, 0xcd, 0x18, - 0x58, 0xca, 0x27, 0x01, 0x1d, 0xa8, 0x31, 0xce, 0x55, 0x3b, 0xb8, 0xed, 0x20, 0x18, 0x01, 0xcf, - 0xc1, 0xa6, 0xa2, 0x31, 0xfa, 0x3a, 0x39, 0x29, 0x7a, 0x9b, 0x9b, 0x33, 0xb1, 0x80, 0x8b, 0x23, - 0x78, 0x7d, 0x01, 0x3a, 0xae, 0xa3, 0x73, 0x8d, 0x8e, 0x20, 0x1e, 0xb4, 0x0e, 0x58, 0xf8, 0x14, - 0x1f, 0xe0, 0x36, 0x0b, 0x97, 0x74, 0x4c, 0xdd, 0x2c, 0x28, 0x34, 0x1a, 0x0e, 0x8b, 0x60, 0x75, - 0x75, 0x0a, 0x2e, 0x86, 0xc9, 0xa9, 0x26, 0x65, 0x5c, 0xc9, 0x09, 0x49, 0x6d, 0x34, 0x89, 0x17, - 0xd2, 0x3d, 0x1d, 0xba, 0x7b, 0x41, 0xbb, 0xae, 0x50, 0x4f, 0x53, 0xd3, 0x4f, 0xbf, 0xd9, 0x9c, - 0x82, 0x8b, 0xc3, 0xe4, 0x22, 0x4f, 0x6e, 0xca, 0x27, 0x44, 0xe9, 0xfb, 0x98, 0x74, 0x7f, 0x1e, - 0x4c, 0x80, 0xcd, 0xf9, 0x84, 0x6a, 0x31, 0xf8, 0x2f, 0xb8, 0x18, 0x82, 0x8b, 0xe5, 0x05, 0xb2, - 0xed, 0x1f, 0x42, 0xb8, 0xd6, 0x52, 0x8e, 0x52, 0x34, 0x1b, 0x04, 0x57, 0x65, 0x2e, 0xb5, 0xcf, - 0x19, 0x04, 0xc9, 0xcf, 0x99, 0xcf, 0x85, 0x9e, 0x10, 0x2f, 0x11, 0x65, 0x5f, 0x87, 0xf4, 0x5c, - 0x95, 0x84, 0x1e, 0x18, 0xfe, 0xdd, 0xe2, 0xce, 0xd7, 0x40, 0x82, 0x7f, 0xb3, 0xe8, 0x87, 0xe5, - 0x10, 0x88, 0xf3, 0xbf, 0xc3, 0x30, 0xbf, 0xd3, 0xc1, 0xc9, 0x91, 0x76, 0x5d, 0x43, 0x49, 0x42, - 0x06, 0x26, 0x54, 0x25, 0xdf, 0xff, 0x06, 0x98, 0xb8, 0xca, 0x4e, 0xe4, 0x43, 0x05, 0x5b, 0x00, - 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, + 0xce, 0x00, 0x00, 0x02, 0xba, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x96, 0x4d, 0x68, 0x13, + 0x41, 0x18, 0x86, 0xc7, 0x35, 0x3f, 0x4d, 0x14, 0xaa, 0xa2, 0x49, 0xa3, 0x20, 0xd5, 0x5a, 0xf0, + 0xa0, 0xe0, 0x4d, 0xf0, 0xe0, 0xc5, 0x1e, 0x3c, 0x79, 0x28, 0xa2, 0x20, 0xd8, 0x42, 0x08, 0x6a, + 0xc0, 0xb6, 0x78, 0xb0, 0x82, 0x50, 0x4c, 0x1b, 0x83, 0x87, 0x8a, 0xd7, 0x1e, 0x02, 0xda, 0x8b, + 0x45, 0xc4, 0x92, 0x8a, 0x6d, 0xc8, 0x41, 0x6b, 0x15, 0xa4, 0xa9, 0x3f, 0x48, 0xc1, 0xff, 0x4b, + 0x11, 0xec, 0xa1, 0xa6, 0xc5, 0x54, 0x5b, 0xcc, 0xb6, 0xca, 0xf8, 0x7e, 0xe1, 0x5b, 0x19, 0xa6, + 0x9b, 0x34, 0xae, 0xd1, 0x81, 0x27, 0xfb, 0xcd, 0xce, 0x64, 0xde, 0x7d, 0x67, 0x76, 0xe6, 0x5b, + 0x21, 0xa5, 0x14, 0xff, 0x83, 0xca, 0x3b, 0x0a, 0x51, 0xa3, 0xd5, 0xd7, 0xac, 0xd2, 0xdf, 0x45, + 0x38, 0x11, 0x92, 0xaa, 0x18, 0xca, 0x4f, 0xaa, 0x83, 0x3b, 0xe0, 0x31, 0x78, 0x08, 0x8e, 0x28, + 0xed, 0x43, 0x44, 0x35, 0x84, 0xe8, 0xc7, 0x0f, 0xb6, 0x71, 0xfd, 0x20, 0xf8, 0xc0, 0xf1, 0x46, + 0xf0, 0x06, 0xbc, 0xa6, 0xb8, 0x1a, 0x42, 0x35, 0x1c, 0xbb, 0x41, 0x0a, 0x5c, 0xe4, 0xfa, 0x29, + 0x10, 0x07, 0x97, 0x28, 0xb6, 0x15, 0x8a, 0xe1, 0x29, 0x1d, 0x08, 0x5d, 0x07, 0xe7, 0x95, 0xb6, + 0x47, 0x60, 0x37, 0xd8, 0x09, 0xc6, 0x56, 0x08, 0x25, 0x84, 0x08, 0xf6, 0xb8, 0x5c, 0x8b, 0x09, + 0x9f, 0x6f, 0x10, 0x82, 0x9b, 0x35, 0xa1, 0xcf, 0x20, 0xc0, 0xf1, 0x16, 0x90, 0x07, 0x06, 0xd7, + 0xe7, 0xad, 0x85, 0x47, 0xd9, 0x0e, 0x0a, 0xdc, 0x7f, 0x0e, 0x2c, 0x15, 0xef, 0x69, 0x6e, 0xea, + 0x81, 0xec, 0x6f, 0x6a, 0x2a, 0x5c, 0xf6, 0x7a, 0xf3, 0x88, 0x9b, 0x15, 0xa1, 0x24, 0x38, 0xc1, + 0xd3, 0x74, 0x16, 0xdc, 0x52, 0xda, 0xbc, 0x4a, 0x7c, 0x41, 0x73, 0xd7, 0x51, 0xbc, 0x67, 0x27, + 0x64, 0x9a, 0xa6, 0x7c, 0x96, 0x4c, 0xca, 0x84, 0xdf, 0x6f, 0x5a, 0xee, 0xd0, 0xb9, 0x11, 0xdc, + 0x00, 0x9f, 0xc0, 0x4d, 0xb0, 0x87, 0x07, 0x5a, 0x0b, 0x16, 0x2c, 0x31, 0x94, 0x49, 0x72, 0xa0, + 0x08, 0xd5, 0x81, 0x97, 0x25, 0x85, 0x88, 0xd9, 0xa9, 0x29, 0x5b, 0x77, 0x8e, 0x36, 0x2c, 0x06, + 0x30, 0xc0, 0x06, 0x02, 0xaf, 0xc9, 0x5e, 0x55, 0xc8, 0x42, 0x77, 0xe7, 0x54, 0x28, 0x41, 0x83, + 0xab, 0xe8, 0x42, 0xd5, 0x70, 0x47, 0x42, 0x2e, 0x3b, 0x47, 0x13, 0x7d, 0x7d, 0x32, 0xee, 0xf5, + 0xfe, 0xe6, 0x5e, 0x34, 0xfa, 0x57, 0xee, 0xca, 0xae, 0x51, 0x29, 0x54, 0x77, 0xdd, 0x42, 0x1c, + 0xb5, 0x1e, 0xf4, 0x9a, 0x10, 0x3e, 0xc7, 0x42, 0xa3, 0xb1, 0x58, 0x49, 0xc1, 0xa1, 0x48, 0x44, + 0x6a, 0xd3, 0xfe, 0xd1, 0xb1, 0x10, 0x4d, 0x9b, 0x2e, 0xf0, 0x6d, 0x6e, 0x4e, 0xde, 0x8d, 0x44, + 0x96, 0xb1, 0xb9, 0xcd, 0x1e, 0xc3, 0xe8, 0xc4, 0x7f, 0x36, 0xb1, 0xab, 0x9a, 0x72, 0x6b, 0xb4, + 0x1e, 0xd4, 0x31, 0xfb, 0x2c, 0xa1, 0x91, 0xf6, 0x76, 0x79, 0xa5, 0xb6, 0xb6, 0xf8, 0xa4, 0x74, + 0x7d, 0xd0, 0xd5, 0x55, 0xbc, 0xff, 0x3e, 0x93, 0x91, 0x57, 0x43, 0xa1, 0xef, 0x58, 0xa7, 0xe7, + 0x58, 0xd3, 0xc6, 0x3f, 0x79, 0x19, 0x5e, 0x29, 0xd6, 0x17, 0x2c, 0xa1, 0xc5, 0x7c, 0x5e, 0xce, + 0xcf, 0xcc, 0xc8, 0xb8, 0xc7, 0x53, 0xbc, 0x7e, 0x99, 0x9e, 0x96, 0xa9, 0x70, 0x78, 0xb9, 0xc7, + 0xed, 0x36, 0xbb, 0x0d, 0xe3, 0x5c, 0x8c, 0x8f, 0x9f, 0x4a, 0x73, 0x94, 0xb8, 0x8d, 0x9d, 0x4d, + 0x96, 0x99, 0x06, 0x7d, 0xea, 0x26, 0x07, 0x06, 0xe4, 0xbb, 0x74, 0x5a, 0xf6, 0x06, 0x83, 0xe4, + 0xe2, 0x29, 0xda, 0x77, 0xd1, 0x99, 0x07, 0x46, 0x28, 0x0f, 0x69, 0xf9, 0x67, 0x82, 0x8e, 0x26, + 0x4e, 0x7a, 0x87, 0xc0, 0x0b, 0x30, 0x0e, 0x9a, 0xcb, 0xae, 0xd1, 0xd7, 0x5c, 0x4e, 0xa6, 0x5a, + 0x5b, 0x8b, 0x6b, 0x01, 0x17, 0x1d, 0x92, 0x9f, 0x18, 0x65, 0x1d, 0x68, 0x00, 0x19, 0x45, 0xa8, + 0x9e, 0xaf, 0x9d, 0xe0, 0x30, 0x9d, 0x89, 0x5c, 0xf7, 0x80, 0xd1, 0x92, 0x42, 0x6f, 0x87, 0x87, + 0x65, 0x6f, 0x20, 0x50, 0x80, 0x8b, 0x2c, 0xd6, 0xa2, 0xa1, 0x44, 0xea, 0xc8, 0xd8, 0xdc, 0x8b, + 0x82, 0xe3, 0x1c, 0xfb, 0xc0, 0x7e, 0x41, 0x13, 0x67, 0x27, 0x34, 0xd8, 0xd2, 0xb2, 0x14, 0x77, + 0xbb, 0x0b, 0x70, 0xd1, 0x26, 0xcb, 0xcd, 0xbb, 0x26, 0xc4, 0x4e, 0xc7, 0x04, 0xef, 0x27, 0x94, + 0xd3, 0x60, 0x0a, 0x1c, 0xd3, 0x85, 0xb6, 0x62, 0xf0, 0x1f, 0x70, 0x31, 0x0e, 0x17, 0x3b, 0x2a, + 0xc8, 0xba, 0xba, 0x50, 0x3f, 0x38, 0xa0, 0xbf, 0x20, 0xe0, 0xc9, 0x8a, 0x3f, 0x23, 0xf9, 0x85, + 0xe4, 0x2a, 0x5f, 0x38, 0x76, 0x42, 0x28, 0x6d, 0x94, 0x7b, 0x94, 0xba, 0xa1, 0xc4, 0xf7, 0x9d, + 0x1d, 0xf9, 0xd8, 0x7b, 0x20, 0xcb, 0x59, 0x36, 0xcb, 0xf5, 0x1c, 0xc7, 0xc4, 0x49, 0x70, 0x06, + 0xa4, 0x39, 0xad, 0x87, 0xff, 0xed, 0x47, 0x23, 0x4e, 0x0b, 0x4a, 0x8c, 0x14, 0xff, 0x02, 0xf9, + 0xe5, 0xd4, 0x72, 0xb3, 0x13, 0xa5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, + 0x42, 0x60, 0x82, }; const BITMAP_OPAQUE annotate_xpm[1] = {{ png, sizeof( png ), "annotate_xpm" }}; diff --git a/bitmaps_png/cpp_26/datasheet.cpp b/bitmaps_png/cpp_26/datasheet.cpp index b1eee6fec4..91bff1e34e 100644 --- a/bitmaps_png/cpp_26/datasheet.cpp +++ b/bitmaps_png/cpp_26/datasheet.cpp @@ -8,106 +8,105 @@ static const unsigned char png[] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c, - 0xce, 0x00, 0x00, 0x06, 0x19, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xad, 0x96, 0x6b, 0x4c, 0x5a, - 0x67, 0x18, 0xc7, 0xbb, 0xfb, 0x25, 0x5b, 0x17, 0x9b, 0x2c, 0xcd, 0xb2, 0xc5, 0xf4, 0xc3, 0xd6, - 0x2d, 0xbb, 0x25, 0x5d, 0xb3, 0x98, 0x7e, 0x68, 0xb2, 0x58, 0x93, 0xb5, 0xeb, 0xcd, 0x64, 0xcd, - 0xda, 0x26, 0x4d, 0xbb, 0x69, 0xdd, 0x66, 0x5b, 0x6d, 0xc4, 0xcb, 0xac, 0xd6, 0x56, 0x05, 0xb5, - 0x5a, 0x45, 0xb1, 0x0a, 0x5a, 0x40, 0xb4, 0xde, 0x2f, 0x45, 0xf0, 0x86, 0x8a, 0x80, 0x88, 0x08, - 0x05, 0x14, 0x44, 0xae, 0x47, 0xe4, 0x26, 0x88, 0x94, 0x82, 0x0a, 0x56, 0x51, 0xc1, 0xb3, 0xf7, - 0x98, 0xd1, 0x58, 0x2f, 0x9b, 0x26, 0x3b, 0xc9, 0x3f, 0x27, 0xef, 0x79, 0xce, 0xfb, 0xfc, 0xce, - 0xfb, 0xfc, 0xcf, 0x7b, 0xd9, 0x03, 0xc3, 0xf0, 0x9e, 0xf5, 0x02, 0xd7, 0xeb, 0x40, 0xef, 0x85, - 0x84, 0x84, 0xec, 0x3f, 0x75, 0x2a, 0xf4, 0xe3, 0xdd, 0xe8, 0xe8, 0xd1, 0xa3, 0x1f, 0x81, 0xbe, - 0xef, 0x03, 0xbd, 0xb5, 0x29, 0xef, 0xfa, 0xc6, 0xbe, 0x7d, 0xfb, 0xf6, 0x3e, 0x24, 0xe0, 0x7e, - 0x19, 0x95, 0x89, 0x49, 0x90, 0x56, 0x45, 0x1d, 0x87, 0x94, 0x4d, 0x5a, 0xf5, 0x58, 0xbd, 0x5a, - 0x29, 0xab, 0x51, 0x8c, 0x8d, 0x54, 0xc9, 0xa5, 0x22, 0x8a, 0x4c, 0x22, 0x20, 0x0d, 0x8b, 0xf8, - 0xe5, 0x22, 0xc1, 0x00, 0x5e, 0x30, 0xc4, 0x79, 0x30, 0x34, 0xc8, 0x2a, 0xe4, 0x71, 0x7b, 0xf3, - 0xfb, 0xd9, 0x5d, 0xb9, 0xcc, 0x9e, 0xb6, 0x1c, 0x5a, 0x73, 0x75, 0x4a, 0x51, 0x01, 0xe6, 0xe7, - 0x43, 0x87, 0x0e, 0x7d, 0x08, 0x80, 0xaf, 0x6c, 0x02, 0x81, 0xeb, 0x1d, 0x46, 0x27, 0x35, 0x71, - 0xd9, 0xeb, 0xb5, 0xfb, 0x7c, 0x2b, 0x33, 0xcb, 0xcb, 0xde, 0xe9, 0xc5, 0xc5, 0x05, 0xd3, 0xc2, - 0xbc, 0x07, 0x9a, 0xf7, 0xb8, 0xe5, 0x73, 0xb3, 0x2e, 0x89, 0xcb, 0xf9, 0x94, 0xef, 0x1a, 0x19, - 0x52, 0x3a, 0x78, 0x0c, 0xa5, 0x75, 0xd2, 0xd8, 0x6a, 0x32, 0xe8, 0x1a, 0x0c, 0x3a, 0x6d, 0x25, - 0xa4, 0x56, 0x94, 0x2b, 0xe5, 0x92, 0x62, 0xe9, 0xf0, 0xd0, 0x7d, 0x91, 0x90, 0x8b, 0x06, 0xd0, - 0xb4, 0x0a, 0x62, 0x71, 0x74, 0x50, 0x50, 0xd0, 0x07, 0x9b, 0x40, 0xb1, 0xd1, 0x57, 0x0f, 0xcf, - 0xce, 0xb8, 0x46, 0x57, 0x56, 0x96, 0x5d, 0x4b, 0x5e, 0xaf, 0x0d, 0x40, 0x8c, 0xf3, 0xf3, 0x1e, - 0xad, 0xc7, 0x33, 0x3b, 0x3a, 0x37, 0xeb, 0x14, 0x01, 0x08, 0xcf, 0x61, 0xb7, 0xf5, 0xcd, 0xd4, - 0x3e, 0xf0, 0x3a, 0x8b, 0xd3, 0xe0, 0x49, 0x3e, 0xb3, 0x67, 0x02, 0x52, 0x53, 0x20, 0xd5, 0x28, - 0x41, 0x39, 0x2a, 0x29, 0x92, 0x0e, 0xf3, 0x73, 0x85, 0x43, 0xec, 0xcc, 0xc1, 0xfe, 0xee, 0x94, - 0xbe, 0xee, 0xd6, 0xf8, 0x0e, 0x5a, 0x7d, 0x42, 0xfa, 0xed, 0x84, 0x50, 0x30, 0x80, 0xd7, 0x5e, - 0x80, 0x90, 0x46, 0x6e, 0xf6, 0xed, 0x33, 0x20, 0xb9, 0x05, 0x40, 0xac, 0xe0, 0xae, 0x9f, 0x9f, - 0x77, 0xab, 0xdd, 0xee, 0x19, 0x19, 0x80, 0x08, 0x01, 0x84, 0xfb, 0xd4, 0x3e, 0xd5, 0x6b, 0xb3, - 0x4e, 0xb6, 0x3b, 0x1f, 0x15, 0x39, 0x1d, 0xd9, 0x37, 0x61, 0x53, 0x5f, 0x5b, 0xbb, 0x46, 0x29, - 0xc5, 0x83, 0x72, 0x16, 0x8e, 0x88, 0x06, 0x73, 0x84, 0x83, 0xec, 0x8c, 0x01, 0x36, 0xe3, 0x56, - 0x6f, 0x67, 0x0b, 0xaa, 0xa7, 0xb3, 0x25, 0x0e, 0xd1, 0x83, 0xa2, 0x7b, 0x97, 0x40, 0xee, 0x37, - 0xd7, 0x83, 0xde, 0xc0, 0x62, 0xb3, 0x2e, 0x2c, 0x2e, 0x2c, 0x98, 0x16, 0x17, 0x9e, 0xeb, 0x00, - 0x44, 0x39, 0x37, 0x37, 0x33, 0xe2, 0x72, 0x3d, 0x13, 0x3c, 0x73, 0x4c, 0xf7, 0x03, 0x48, 0xb7, - 0xcd, 0x6a, 0xa6, 0x4f, 0x9a, 0xf4, 0x4d, 0x56, 0x5a, 0xb5, 0xc0, 0x9e, 0x1a, 0x01, 0x43, 0xfc, - 0x3e, 0x8a, 0x42, 0x26, 0x2e, 0x00, 0x90, 0x6c, 0x01, 0x8f, 0x79, 0x97, 0xdd, 0x4b, 0x4f, 0x0a, - 0x00, 0x02, 0x22, 0x96, 0xe3, 0x7e, 0x47, 0x2c, 0x79, 0x09, 0x84, 0xc3, 0xde, 0xbb, 0x00, 0x4a, - 0xa5, 0xf1, 0xb8, 0xe7, 0x14, 0x00, 0x22, 0x01, 0x10, 0x3e, 0x80, 0xb0, 0xed, 0x36, 0x2b, 0x63, - 0xca, 0x6a, 0x6e, 0x35, 0x9b, 0x74, 0x0d, 0x7a, 0x9d, 0xba, 0xca, 0xdc, 0x44, 0xe4, 0xd8, 0x6e, - 0x9e, 0x83, 0x35, 0x75, 0x84, 0x46, 0x00, 0x48, 0x47, 0x00, 0x4c, 0x06, 0x35, 0x6e, 0x23, 0x04, - 0x51, 0xc5, 0x76, 0x20, 0xf7, 0xec, 0x8c, 0x6c, 0x76, 0xc6, 0x29, 0x76, 0xb9, 0x1c, 0x3c, 0x00, - 0xe9, 0x9b, 0xb6, 0x59, 0x3a, 0xa7, 0x26, 0x8d, 0x54, 0xb3, 0x51, 0x57, 0x0f, 0x20, 0x95, 0x5a, - 0xb5, 0xbc, 0xdc, 0x8a, 0xbe, 0x61, 0xb1, 0x25, 0x5c, 0x84, 0x75, 0x57, 0x42, 0xc7, 0x37, 0x26, - 0x46, 0x80, 0x5c, 0x56, 0x67, 0x32, 0xf0, 0x2a, 0x43, 0x2a, 0x1e, 0xca, 0xab, 0xae, 0x20, 0x44, - 0x6f, 0x09, 0x72, 0x39, 0x9f, 0x21, 0x7e, 0x0c, 0x38, 0xec, 0x53, 0x4c, 0xdb, 0xd4, 0x64, 0x87, - 0xc5, 0x6c, 0x78, 0x6c, 0x36, 0x8e, 0xd7, 0x4e, 0x8c, 0xab, 0x2b, 0x34, 0xc0, 0x74, 0x15, 0x9f, - 0x85, 0x37, 0x9f, 0x3b, 0xec, 0x5f, 0xd2, 0xa9, 0x60, 0xd3, 0xd9, 0x6f, 0x57, 0x86, 0x13, 0x2f, - 0x57, 0x33, 0xbb, 0xa8, 0x09, 0x22, 0x01, 0x07, 0x2d, 0x1f, 0x15, 0x17, 0x22, 0xef, 0x20, 0x1f, - 0x13, 0x50, 0x0d, 0xa5, 0xec, 0xda, 0x96, 0x20, 0xc7, 0xd3, 0x69, 0x0e, 0xf0, 0xa3, 0x07, 0xf8, - 0xd1, 0x66, 0x31, 0xe9, 0x9b, 0x8d, 0x13, 0x50, 0xcd, 0xc4, 0xb8, 0x8a, 0x04, 0x12, 0x94, 0x8e, - 0x8e, 0x08, 0xf3, 0xe5, 0x89, 0x97, 0xe8, 0xd6, 0x98, 0xf0, 0x25, 0xd0, 0x07, 0xf6, 0x8e, 0x89, - 0x61, 0xe3, 0x89, 0x83, 0x3e, 0xa8, 0xa1, 0xfc, 0xf1, 0xfa, 0xe4, 0x3b, 0x02, 0xd9, 0x6d, 0x96, - 0x2e, 0xe0, 0x07, 0x0d, 0x40, 0x1a, 0x8d, 0x3a, 0xed, 0xa3, 0x71, 0x8d, 0x82, 0xa8, 0x52, 0x48, - 0x4b, 0xa4, 0x62, 0x7e, 0x6e, 0x7f, 0x23, 0x39, 0xcd, 0x70, 0xf2, 0x0b, 0xef, 0x3c, 0xb7, 0x13, - 0x5e, 0x1c, 0x1e, 0x84, 0xe7, 0xa8, 0x14, 0xd8, 0xf2, 0xdb, 0xb1, 0x55, 0xe3, 0xf1, 0x83, 0x2b, - 0x86, 0x93, 0x5f, 0x2e, 0x1b, 0x4f, 0x7f, 0xb5, 0xa4, 0x4f, 0x8d, 0x90, 0xed, 0x08, 0x34, 0x69, - 0x36, 0x50, 0x37, 0x4e, 0x42, 0x89, 0x70, 0x20, 0xbb, 0x8f, 0x5e, 0x97, 0xa4, 0xb9, 0x12, 0x2a, - 0x31, 0x84, 0x1d, 0x00, 0xa3, 0xf8, 0xcc, 0x6f, 0xbc, 0x78, 0xc4, 0x6d, 0x88, 0x3e, 0x6d, 0x9c, - 0xb8, 0x15, 0x21, 0x31, 0xa0, 0xce, 0x2b, 0x0d, 0xc7, 0x3f, 0xf5, 0x1b, 0x8f, 0x1d, 0x58, 0xd5, - 0xc7, 0x9d, 0x57, 0xed, 0x08, 0x04, 0x4a, 0x55, 0x8b, 0x4c, 0x42, 0x8d, 0x5a, 0x5e, 0x06, 0x26, - 0x21, 0x4e, 0xce, 0xa4, 0x15, 0x6b, 0x22, 0x7f, 0x7c, 0x62, 0xf8, 0xe9, 0xf3, 0x25, 0xc3, 0xf1, - 0x83, 0xcb, 0xba, 0xf4, 0x6b, 0x02, 0x88, 0xdd, 0x51, 0xb3, 0xa9, 0x4c, 0xa2, 0x01, 0x0a, 0xd4, - 0xdb, 0x5a, 0xb7, 0xe3, 0xd2, 0x8d, 0x6b, 0x94, 0x64, 0xe0, 0x07, 0x5e, 0x01, 0x8c, 0x55, 0xd0, - 0x6a, 0x1e, 0x1a, 0xcf, 0x7d, 0xe7, 0xb1, 0xa7, 0x45, 0xf9, 0x4c, 0xe1, 0xdf, 0xf8, 0x75, 0x98, - 0x58, 0xfe, 0x76, 0x5e, 0xec, 0xda, 0x23, 0xc4, 0x8f, 0xc0, 0x24, 0x94, 0xa7, 0x45, 0x51, 0xcd, - 0x17, 0x8f, 0xf8, 0xad, 0x7f, 0x9e, 0x5c, 0x31, 0x46, 0x84, 0x59, 0xb5, 0x0a, 0xe9, 0xc3, 0xff, - 0x0d, 0x04, 0x56, 0xe6, 0xfc, 0xe1, 0x27, 0x3c, 0x0c, 0x8f, 0xd3, 0x95, 0x2a, 0xb9, 0x97, 0x88, - 0xd7, 0xff, 0x71, 0x4a, 0x3f, 0x91, 0xfc, 0xab, 0x4c, 0x33, 0x26, 0x21, 0xee, 0x16, 0xf2, 0xaf, - 0x20, 0x21, 0x9f, 0x83, 0x6e, 0x69, 0x69, 0x71, 0x66, 0x64, 0x64, 0xac, 0xa6, 0xa7, 0xa7, 0xaf, - 0x09, 0x8b, 0xc5, 0x2e, 0x71, 0x39, 0x2c, 0x21, 0x04, 0xa9, 0xda, 0x03, 0xcf, 0x10, 0x65, 0x65, - 0x65, 0xf9, 0x6b, 0x6b, 0x6b, 0xec, 0x5a, 0xcd, 0x18, 0x09, 0x49, 0xaa, 0x54, 0xc8, 0x59, 0x64, - 0x32, 0xd9, 0x0b, 0x9e, 0xaf, 0xc5, 0xf3, 0xf2, 0xf2, 0x16, 0xb7, 0x05, 0x71, 0x59, 0x1d, 0xa9, - 0x78, 0x3c, 0xde, 0x8d, 0x42, 0xc5, 0xf9, 0x28, 0x14, 0x32, 0x44, 0x26, 0x93, 0xf4, 0x49, 0x49, - 0x49, 0x7e, 0x14, 0x0a, 0xe5, 0xd7, 0x6a, 0x55, 0x1d, 0x91, 0x91, 0x91, 0x70, 0x21, 0x16, 0x3b, - 0x5d, 0x59, 0x59, 0x01, 0xa1, 0xd1, 0xe8, 0x45, 0xa4, 0xdd, 0x50, 0x5f, 0xa7, 0x85, 0x80, 0xb7, - 0x20, 0xb1, 0x3f, 0x3e, 0x3e, 0x7e, 0xa5, 0xbc, 0xbc, 0xcc, 0x80, 0xf4, 0xad, 0xae, 0x7e, 0x34, - 0xba, 0x2d, 0x88, 0xd1, 0xde, 0x84, 0xc2, 0xe3, 0x4b, 0x3d, 0x77, 0xef, 0xde, 0x59, 0x0c, 0x0c, - 0xbf, 0x8d, 0x4e, 0xb7, 0x20, 0x09, 0x07, 0xb8, 0x6c, 0x2e, 0x72, 0x6f, 0xa3, 0x51, 0x39, 0x81, - 0x58, 0x4e, 0x4e, 0x8e, 0x2f, 0x3f, 0xff, 0xbe, 0x5b, 0x22, 0x11, 0x09, 0xd6, 0x62, 0x6d, 0x34, - 0xc6, 0x8e, 0x4a, 0x07, 0xf6, 0x91, 0xa4, 0x32, 0x02, 0xe1, 0x79, 0x72, 0x72, 0xb2, 0xaf, 0x8f, - 0xd9, 0x0b, 0xf5, 0xf6, 0x74, 0x1b, 0x32, 0x33, 0x33, 0xfd, 0x31, 0x31, 0x31, 0x7e, 0x8d, 0x66, - 0xac, 0x73, 0x23, 0xa8, 0xaa, 0xb2, 0x72, 0x2e, 0x26, 0xe6, 0xc6, 0x2a, 0x9b, 0xcd, 0x52, 0x22, - 0xb1, 0xdc, 0xdc, 0x5c, 0x00, 0xce, 0x5f, 0x53, 0x69, 0x69, 0x89, 0x7b, 0x4b, 0x10, 0xb2, 0x4d, - 0x20, 0x0b, 0x21, 0x81, 0x80, 0x5f, 0x88, 0x8a, 0x8a, 0x82, 0xaf, 0x5f, 0xbf, 0xbe, 0x8a, 0x08, - 0x40, 0xbd, 0x8d, 0x0d, 0xf5, 0x82, 0x40, 0xe9, 0xd6, 0x83, 0x88, 0xc4, 0x87, 0x0b, 0x09, 0x09, - 0xf1, 0x2b, 0xfd, 0x1c, 0x96, 0x0a, 0x89, 0xe1, 0xf1, 0x25, 0x26, 0x12, 0x91, 0xa8, 0x47, 0x54, - 0x55, 0x55, 0xa9, 0xa8, 0xda, 0x02, 0x04, 0x36, 0xbe, 0xf4, 0x33, 0xe0, 0xd7, 0x2e, 0x41, 0x40, - 0xeb, 0x4b, 0xf7, 0x42, 0x1b, 0x40, 0xe3, 0x90, 0x9a, 0x9e, 0x92, 0x92, 0x02, 0x17, 0x16, 0x62, - 0x1d, 0x01, 0x90, 0x80, 0xdf, 0x5f, 0x1d, 0x78, 0x5f, 0xa3, 0x94, 0x11, 0x4a, 0x4b, 0x0b, 0x2e, - 0x07, 0x0e, 0x2a, 0x2f, 0xb6, 0xf2, 0x9b, 0xd7, 0xa2, 0xbe, 0x1f, 0x1a, 0xec, 0xcb, 0xfb, 0x2f, - 0x10, 0x06, 0x83, 0xf1, 0xe1, 0x70, 0x45, 0xcb, 0xb1, 0xb1, 0xb1, 0x30, 0xd2, 0xa6, 0x52, 0x9b, - 0x79, 0x5b, 0x81, 0x24, 0x62, 0x5e, 0x41, 0xc6, 0x9d, 0xa4, 0x63, 0x2f, 0x6d, 0xe5, 0xff, 0x8c, - 0xea, 0xdd, 0x0a, 0x12, 0xfe, 0x6a, 0x63, 0x63, 0x9d, 0xb4, 0x82, 0x4c, 0x52, 0x6d, 0x04, 0x81, - 0x65, 0xa9, 0xb6, 0xb8, 0x18, 0x67, 0x0b, 0x88, 0x00, 0xca, 0x44, 0x6f, 0x7d, 0xcc, 0x42, 0x62, - 0xfc, 0xc1, 0x81, 0x1e, 0x1c, 0x0e, 0x37, 0x35, 0x2c, 0x11, 0x52, 0x90, 0xf6, 0x98, 0x4c, 0x5c, - 0xdc, 0xd2, 0x50, 0x85, 0x0a, 0x0e, 0xfe, 0x20, 0x68, 0xcb, 0xe3, 0x56, 0x70, 0x70, 0x70, 0xd0, - 0x7d, 0xcc, 0x9d, 0xb3, 0xcd, 0xf5, 0x94, 0xbf, 0x98, 0x8c, 0x56, 0x34, 0x93, 0x41, 0xdf, 0xb5, - 0x5a, 0x9b, 0x6b, 0x6e, 0x15, 0x14, 0x60, 0xce, 0x87, 0x84, 0x7c, 0xbd, 0x1f, 0x7c, 0xfc, 0xab, - 0x5b, 0x82, 0x02, 0x3f, 0x06, 0xd0, 0xde, 0x13, 0x27, 0x7e, 0xf8, 0x24, 0x3c, 0x3c, 0xfc, 0xc0, - 0x6e, 0x74, 0x3a, 0x2c, 0x2c, 0x18, 0xe9, 0x0b, 0xf4, 0xf6, 0xc6, 0xbc, 0x7f, 0x03, 0xdc, 0x7e, - 0xbd, 0xdc, 0x1e, 0xdc, 0x1a, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, - 0x60, 0x82, + 0xce, 0x00, 0x00, 0x06, 0x0b, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xad, 0x96, 0x5b, 0x6c, 0x1c, + 0x57, 0x19, 0xc7, 0xbf, 0x33, 0x33, 0x3b, 0xbb, 0xeb, 0xf5, 0x2d, 0xb6, 0xb3, 0xb6, 0x37, 0x8e, + 0x9d, 0x26, 0xb5, 0x9a, 0x36, 0x76, 0x93, 0x86, 0xd8, 0x49, 0x21, 0x6e, 0x5a, 0x41, 0x2b, 0x59, + 0x6d, 0x94, 0xa8, 0x8d, 0x28, 0x12, 0x85, 0x40, 0x84, 0xa8, 0x10, 0x20, 0x51, 0x24, 0x10, 0x25, + 0x42, 0x20, 0xf2, 0x00, 0x0f, 0x15, 0xa2, 0x49, 0xe1, 0x21, 0x48, 0xa8, 0xaa, 0x48, 0x1f, 0x7a, + 0x09, 0x02, 0x1a, 0x41, 0xe8, 0x45, 0x8d, 0x4c, 0xd3, 0xa2, 0x36, 0x55, 0x02, 0xa2, 0x97, 0x24, + 0x8d, 0x5d, 0xdf, 0xbd, 0xf6, 0xda, 0x8e, 0xb3, 0xde, 0x99, 0xf3, 0xdd, 0x0e, 0x0f, 0xbb, 0x76, + 0x13, 0x68, 0xd5, 0x40, 0xfa, 0x97, 0xbe, 0x39, 0x9a, 0xd1, 0x9c, 0xef, 0x77, 0xfe, 0xf3, 0x3f, + 0x33, 0x1a, 0xe3, 0x9c, 0x03, 0x63, 0x8c, 0xdf, 0xdb, 0xb3, 0x39, 0xbb, 0xf7, 0x81, 0x2f, 0xec, + 0xd8, 0xd0, 0xd5, 0xbd, 0xb1, 0xba, 0xba, 0xa6, 0x09, 0x00, 0x9c, 0xaa, 0x3a, 0xe7, 0x9c, 0xaa, + 0x6a, 0xe5, 0xa8, 0xea, 0x54, 0x2f, 0xbb, 0x5c, 0x39, 0x55, 0x5d, 0xbe, 0x87, 0x05, 0x79, 0x61, + 0xa1, 0x38, 0x37, 0x36, 0x36, 0x7a, 0xe1, 0xd7, 0x87, 0x1f, 0x7f, 0x65, 0x68, 0x68, 0x78, 0xde, + 0x39, 0x27, 0x81, 0x31, 0xc6, 0xec, 0xda, 0xd9, 0xdf, 0x71, 0xe0, 0xc0, 0x81, 0x1f, 0xad, 0xbf, + 0xa9, 0x7b, 0xa7, 0x67, 0xbc, 0x40, 0x9d, 0xa2, 0xaa, 0x5a, 0xa7, 0x8a, 0xaa, 0x8a, 0xaa, 0x62, + 0x55, 0x15, 0x45, 0x04, 0xe3, 0xe7, 0x8e, 0x34, 0xb8, 0x54, 0x3a, 0xf2, 0xb6, 0xf7, 0x8f, 0x8a, + 0x30, 0x0a, 0xb3, 0xe5, 0xf2, 0x88, 0xcc, 0x84, 0x44, 0x68, 0x99, 0x28, 0x68, 0x6b, 0x5b, 0xd5, + 0xd0, 0xd2, 0xda, 0xb2, 0xf6, 0xe0, 0x63, 0x87, 0x9f, 0x32, 0xc6, 0x4c, 0xf8, 0x00, 0x50, 0x7d, + 0xe8, 0xe0, 0x2f, 0xbe, 0xd1, 0xbb, 0x75, 0xfb, 0x3e, 0x30, 0x00, 0x15, 0x40, 0xac, 0xaa, 0xb6, + 0x5c, 0xb2, 0x3c, 0xe2, 0x9b, 0xaf, 0xa4, 0xec, 0x6f, 0x7e, 0xde, 0xad, 0xff, 0xf8, 0x7b, 0x8b, + 0xd6, 0x35, 0xe4, 0x35, 0xd7, 0x51, 0x60, 0x66, 0x2b, 0x4c, 0x96, 0x08, 0x97, 0x0b, 0x6d, 0x6c, + 0x85, 0x29, 0x4e, 0x24, 0x02, 0x58, 0xdd, 0x96, 0xcb, 0xfe, 0xf9, 0xf8, 0x8b, 0xe7, 0x83, 0xdd, + 0x3b, 0xfb, 0xb3, 0x9d, 0x9d, 0x37, 0x6c, 0x76, 0xce, 0x51, 0xd9, 0x49, 0x79, 0xf5, 0x4b, 0x6e, + 0x44, 0xc4, 0xaa, 0x0a, 0xaa, 0x08, 0xf2, 0x6c, 0x3e, 0xe5, 0x37, 0xe7, 0x34, 0x75, 0xe3, 0x66, + 0xaf, 0xf8, 0xce, 0xe9, 0x5a, 0xde, 0xdc, 0x17, 0x33, 0x91, 0x65, 0x26, 0x64, 0x42, 0x44, 0x42, + 0x4b, 0x68, 0x11, 0xad, 0x45, 0x66, 0xe2, 0xc0, 0xf7, 0x21, 0x9b, 0x6d, 0x6a, 0x6b, 0x5f, 0xdd, + 0x96, 0x09, 0xd6, 0xae, 0xbb, 0xae, 0x39, 0x95, 0xae, 0x4a, 0x8b, 0x4a, 0x5c, 0x69, 0x5e, 0x6e, + 0xac, 0x8a, 0x2a, 0x82, 0xa2, 0x62, 0x55, 0x04, 0x45, 0x04, 0x5d, 0x53, 0xcb, 0x9c, 0x4e, 0x8e, + 0xf8, 0xda, 0xd9, 0xad, 0x4e, 0x85, 0x08, 0x6d, 0xc4, 0x44, 0x48, 0x84, 0x48, 0x65, 0x02, 0xda, + 0x38, 0xb2, 0xce, 0x39, 0x07, 0x15, 0x25, 0xc3, 0xa4, 0xbb, 0x6d, 0xfb, 0xad, 0x2b, 0x83, 0xc0, + 0xf3, 0x3c, 0x55, 0x25, 0x15, 0x89, 0xf4, 0x83, 0x4c, 0xb0, 0xe2, 0xc2, 0x4a, 0x19, 0x56, 0xce, + 0x62, 0xf5, 0xba, 0x05, 0x2f, 0x59, 0x85, 0xf6, 0xd4, 0xdf, 0x42, 0xb9, 0x71, 0x13, 0x22, 0xda, + 0x98, 0x10, 0x6d, 0xa9, 0x54, 0x5c, 0x24, 0xb4, 0xa4, 0xaa, 0x0a, 0xff, 0x25, 0x03, 0x61, 0x32, + 0x0c, 0x3c, 0x00, 0x00, 0x15, 0xe1, 0xf2, 0x23, 0x93, 0x58, 0x84, 0xcb, 0xc5, 0x1c, 0xf3, 0x52, + 0x11, 0xc5, 0xcc, 0x14, 0xb3, 0x83, 0x88, 0xbb, 0x7a, 0xce, 0xc8, 0xfc, 0x8c, 0xb1, 0x4d, 0xb9, + 0xd1, 0xf9, 0xb9, 0x42, 0x61, 0x7e, 0x6e, 0x66, 0xce, 0xc6, 0x91, 0xfd, 0x30, 0x88, 0x31, 0xc6, + 0xf8, 0xbe, 0xef, 0x01, 0x00, 0x04, 0x00, 0x00, 0x22, 0x42, 0x22, 0x12, 0x95, 0x5d, 0x28, 0x8a, + 0xb0, 0x95, 0xa5, 0x5c, 0x98, 0xad, 0x08, 0x23, 0x33, 0xa3, 0x30, 0xa1, 0x74, 0xf5, 0xbc, 0x95, + 0x79, 0xf5, 0xf9, 0xde, 0x05, 0xcf, 0x8c, 0xa0, 0x8d, 0xf1, 0xf2, 0xa6, 0x61, 0x98, 0x0c, 0x53, + 0xe9, 0xaa, 0x54, 0x18, 0x26, 0x53, 0x61, 0x32, 0x95, 0x0a, 0x12, 0x89, 0xe4, 0xd4, 0xe4, 0xc4, + 0xc2, 0x32, 0x48, 0x55, 0x48, 0x84, 0x63, 0x15, 0xc5, 0x32, 0x80, 0x2d, 0x33, 0xa3, 0x88, 0x60, + 0x19, 0x42, 0x96, 0x89, 0xb0, 0x78, 0xe9, 0xe2, 0x7c, 0x78, 0x6a, 0xa0, 0x11, 0x00, 0x60, 0xc5, + 0xe9, 0x57, 0x3f, 0x53, 0xbc, 0xfe, 0xe6, 0xa7, 0x93, 0xa9, 0x74, 0xb2, 0xb6, 0xb6, 0xbe, 0x3e, + 0x9d, 0xa9, 0xae, 0xf5, 0x8c, 0xe7, 0xc3, 0x47, 0xa8, 0xe2, 0x88, 0x59, 0x44, 0x62, 0x11, 0xae, + 0x04, 0xcf, 0xc8, 0x2c, 0x28, 0x4c, 0x96, 0x99, 0x91, 0x19, 0x71, 0x7e, 0xae, 0x30, 0x53, 0x5a, + 0x2c, 0x96, 0xd6, 0x4c, 0x8d, 0x74, 0x57, 0x7d, 0xfa, 0x4e, 0x30, 0x6f, 0x0c, 0xf4, 0xb4, 0xd5, + 0xaf, 0x38, 0x1d, 0x34, 0x64, 0x3f, 0xb2, 0xf9, 0xe5, 0xf2, 0x00, 0x00, 0x84, 0x85, 0x84, 0x29, + 0x16, 0x66, 0xcb, 0x44, 0x31, 0x11, 0xc5, 0x4c, 0x18, 0x13, 0xa1, 0xb5, 0x36, 0x2a, 0xcd, 0xe4, + 0x27, 0x27, 0x4b, 0x8b, 0xc5, 0x52, 0x38, 0x9b, 0xcf, 0x24, 0xa6, 0xc6, 0x6e, 0x5a, 0xf1, 0xe0, + 0x0f, 0x21, 0xec, 0xdc, 0x00, 0xc9, 0x17, 0x8f, 0xde, 0x02, 0x57, 0x29, 0xaf, 0xe2, 0x88, 0x98, + 0x39, 0x62, 0xa2, 0x88, 0x98, 0xe2, 0x32, 0x0c, 0xa3, 0x28, 0x2a, 0x5d, 0x9a, 0xc9, 0x4f, 0x4e, + 0x21, 0x5a, 0x4c, 0xa6, 0xd2, 0xc9, 0xdc, 0xb9, 0x33, 0x77, 0x26, 0x6f, 0xd8, 0xa8, 0x89, 0xb6, + 0xb5, 0x50, 0xbf, 0xf7, 0xa1, 0xc0, 0x7f, 0xed, 0xa5, 0x2d, 0x66, 0x62, 0x38, 0xf3, 0x3f, 0x81, + 0x88, 0x28, 0x26, 0xc6, 0x98, 0x08, 0x63, 0x44, 0x1b, 0x5b, 0x1b, 0x47, 0x73, 0x85, 0xe9, 0x82, + 0xaa, 0x68, 0x63, 0x53, 0xf3, 0xca, 0xd6, 0x5c, 0xfb, 0x9a, 0xe4, 0x3b, 0xa7, 0x6f, 0xa9, 0xdd, + 0xf5, 0xa5, 0x00, 0x00, 0x20, 0xfd, 0xa9, 0x3e, 0xc8, 0xec, 0xb8, 0xdb, 0x24, 0x8e, 0x3c, 0x7a, + 0xc7, 0x55, 0x83, 0x98, 0x99, 0x99, 0x31, 0x26, 0xa4, 0x98, 0xd0, 0x46, 0x88, 0x36, 0x9a, 0x9f, + 0x9b, 0x99, 0x75, 0x4e, 0x5d, 0x73, 0x6b, 0x5b, 0xae, 0xa6, 0xb6, 0xbe, 0xd1, 0xbc, 0x71, 0x22, + 0x07, 0xd1, 0x62, 0x55, 0x55, 0x5f, 0xff, 0xf2, 0xe4, 0x86, 0x6f, 0xfe, 0xd8, 0x37, 0x17, 0x67, + 0x9b, 0xbd, 0x3f, 0x3e, 0xb1, 0xfe, 0xe3, 0x40, 0x01, 0x00, 0x00, 0x13, 0x11, 0x21, 0x9a, 0xa5, + 0xb7, 0xbc, 0x58, 0x5c, 0x58, 0x70, 0xea, 0x5c, 0xeb, 0xaa, 0x8e, 0xf6, 0x44, 0x22, 0x4c, 0x01, + 0x00, 0x04, 0x2f, 0x3c, 0xbb, 0xb5, 0xee, 0xfe, 0x07, 0x3d, 0x13, 0x26, 0x3f, 0x58, 0x65, 0xa6, + 0x06, 0xb2, 0xfb, 0x0f, 0xf9, 0x93, 0x0f, 0xef, 0xdd, 0x0e, 0x41, 0x42, 0xa1, 0xb1, 0xb9, 0x68, + 0xa6, 0xc7, 0x6b, 0x21, 0x91, 0x64, 0x48, 0x67, 0x50, 0xb7, 0xf4, 0x8d, 0x5f, 0x09, 0x62, 0x22, + 0x44, 0xab, 0x44, 0x68, 0xe3, 0xa8, 0x14, 0x31, 0x11, 0xe7, 0xda, 0x3a, 0x3a, 0x7c, 0x3f, 0x08, + 0x01, 0x00, 0xbc, 0xd7, 0x5f, 0xce, 0x79, 0xf3, 0xb3, 0x8d, 0x35, 0xf7, 0xee, 0x33, 0x1a, 0x2d, + 0x02, 0x0d, 0x9e, 0x05, 0x1c, 0x7a, 0x17, 0x68, 0xe8, 0x2c, 0xe0, 0x7b, 0xff, 0x62, 0x63, 0x8c, + 0xe7, 0x1f, 0x3b, 0x72, 0x3b, 0x78, 0x3e, 0x24, 0xd7, 0x6f, 0x62, 0x65, 0x74, 0x32, 0x39, 0xe2, + 0xeb, 0xc9, 0xbf, 0xe4, 0xe1, 0x2b, 0x3f, 0x78, 0x62, 0x19, 0x44, 0x44, 0x54, 0xf9, 0x9a, 0x58, + 0x1b, 0x47, 0xb6, 0xb9, 0x75, 0xf5, 0xaa, 0x25, 0x08, 0x00, 0x80, 0xff, 0xfc, 0x33, 0xdb, 0x12, + 0xab, 0x3a, 0xfc, 0xa9, 0xfd, 0xfb, 0xd8, 0xfe, 0xf3, 0x75, 0xdf, 0xa4, 0xab, 0xc8, 0x34, 0xb5, + 0xcc, 0x4b, 0x43, 0x36, 0xef, 0x5a, 0xaf, 0x2b, 0xe8, 0xb6, 0xbb, 0x66, 0xcd, 0xcc, 0x64, 0x26, + 0x38, 0xfe, 0xd4, 0x6d, 0x3c, 0x3d, 0x1e, 0xa4, 0x7b, 0x76, 0xf8, 0x8b, 0xa3, 0x83, 0xce, 0xad, + 0xeb, 0x7a, 0xff, 0x0a, 0x47, 0x44, 0x48, 0x9e, 0x71, 0x1c, 0xc7, 0x91, 0x6d, 0x5a, 0xd9, 0x92, + 0x4d, 0x26, 0x53, 0x19, 0xc0, 0xd8, 0xf7, 0x8e, 0x3f, 0xdd, 0x19, 0x9c, 0x1a, 0xd8, 0xe4, 0x0a, + 0x53, 0xd5, 0xd6, 0x0f, 0xa6, 0x34, 0xb7, 0xe6, 0x3d, 0xfd, 0xde, 0x23, 0xc3, 0xae, 0xbd, 0x73, + 0xe1, 0x3f, 0x33, 0x70, 0x00, 0xd3, 0xb6, 0xaf, 0x7f, 0x38, 0x38, 0x71, 0xac, 0x83, 0x06, 0xdf, + 0x6e, 0xd6, 0xfb, 0xbe, 0x36, 0xe2, 0xb6, 0x7d, 0x6e, 0x0c, 0x26, 0xc7, 0xaf, 0x00, 0xb1, 0x0a, + 0xc5, 0x75, 0xf5, 0x0d, 0xf5, 0x19, 0x07, 0x59, 0xff, 0xc9, 0xc7, 0xba, 0xfc, 0x33, 0x27, 0x37, + 0x1a, 0x3f, 0x08, 0xf4, 0xe2, 0xac, 0xa7, 0xbb, 0xbe, 0xfc, 0x92, 0xdc, 0xf5, 0xf9, 0xf3, 0x1f, + 0x17, 0xb8, 0x09, 0x12, 0x2a, 0x9f, 0xdd, 0x3d, 0x08, 0xb0, 0x7b, 0xf0, 0xc3, 0x77, 0x1d, 0x11, + 0x57, 0x55, 0x55, 0xa7, 0x1b, 0x4a, 0xc5, 0xeb, 0xc3, 0x47, 0xbe, 0x7b, 0x5f, 0x6a, 0x76, 0x6a, + 0x73, 0x76, 0xff, 0xa1, 0x30, 0x75, 0xf3, 0x56, 0x67, 0x3a, 0x37, 0x0c, 0x5f, 0x0d, 0xe4, 0xaa, + 0xb6, 0xb7, 0x31, 0xc6, 0xac, 0xcc, 0x8f, 0x74, 0x27, 0x1e, 0x7d, 0x78, 0x4f, 0x4d, 0x5f, 0x7f, + 0x75, 0xee, 0xe0, 0xb3, 0xbe, 0xcc, 0xcf, 0x40, 0x74, 0x6a, 0x40, 0xf0, 0x81, 0x87, 0x5e, 0x86, + 0x4f, 0x40, 0x9e, 0x88, 0x68, 0x5d, 0x7d, 0x43, 0x5d, 0x78, 0xe2, 0xb9, 0xde, 0x9a, 0xfe, 0xfb, + 0xc3, 0x86, 0x6f, 0xfd, 0xc4, 0x5b, 0xf8, 0xd3, 0xef, 0xa0, 0xf0, 0xcb, 0xfd, 0xc2, 0x7b, 0xbe, + 0xfe, 0x57, 0x68, 0x6a, 0x89, 0xaf, 0x15, 0x42, 0x48, 0x12, 0x5c, 0x18, 0x1a, 0xce, 0x8b, 0x4a, + 0xe0, 0x82, 0x10, 0xed, 0xf9, 0xb7, 0x74, 0xfa, 0x67, 0xdf, 0x81, 0xd2, 0xc9, 0x17, 0x98, 0xbe, + 0xfa, 0xfd, 0x63, 0xae, 0xbb, 0x77, 0xfa, 0x5a, 0x21, 0xa5, 0xc5, 0x45, 0x3e, 0x31, 0x70, 0x32, + 0xef, 0xfd, 0xfe, 0x0f, 0xc7, 0xa6, 0x27, 0xc7, 0x27, 0x26, 0xe8, 0xee, 0x2f, 0xbe, 0x19, 0xab, + 0x9e, 0x2d, 0x16, 0xa6, 0xde, 0xa6, 0x6f, 0xff, 0xf4, 0xe8, 0x27, 0x01, 0x11, 0x11, 0x37, 0x3c, + 0x3c, 0x72, 0x6e, 0x78, 0x64, 0xb4, 0xe4, 0x03, 0x00, 0x11, 0xd3, 0xcc, 0xda, 0x4d, 0x9b, 0xda, + 0x33, 0x77, 0xdc, 0x93, 0x37, 0x3d, 0xb7, 0x8f, 0x42, 0x5d, 0xa3, 0xbd, 0x56, 0x88, 0xb5, 0x31, + 0x9f, 0x3b, 0xfb, 0xee, 0xd8, 0xa1, 0x5f, 0x1d, 0x3e, 0x3a, 0x3a, 0x36, 0x3e, 0x6b, 0x2a, 0x3f, + 0x90, 0xc1, 0xb6, 0xde, 0x2d, 0xcd, 0x7b, 0xee, 0xbd, 0xe7, 0xd6, 0x96, 0x96, 0xd6, 0xb6, 0xea, + 0xea, 0xea, 0x3a, 0xcf, 0x03, 0xf3, 0xff, 0x00, 0x54, 0x9d, 0xbb, 0xb4, 0x70, 0x71, 0x76, 0x74, + 0x7c, 0xe2, 0xfd, 0xdf, 0x3e, 0xfe, 0xe4, 0x6b, 0xe7, 0xce, 0x5f, 0x28, 0x38, 0xe7, 0xe4, 0xdf, + 0x37, 0x89, 0xa4, 0x7d, 0x90, 0x97, 0xe7, 0x08, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, + 0xae, 0x42, 0x60, 0x82, }; const BITMAP_OPAQUE datasheet_xpm[1] = {{ png, sizeof( png ), "datasheet_xpm" }}; diff --git a/bitmaps_png/cpp_26/hidden_pin.cpp b/bitmaps_png/cpp_26/hidden_pin.cpp index 2e93d4ccda..c31ca3ca4c 100644 --- a/bitmaps_png/cpp_26/hidden_pin.cpp +++ b/bitmaps_png/cpp_26/hidden_pin.cpp @@ -8,32 +8,39 @@ static const unsigned char png[] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c, - 0xce, 0x00, 0x00, 0x01, 0x7e, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0xf8, 0xff, 0xff, 0x3f, - 0x03, 0x39, 0x38, 0x3d, 0x3d, 0x3d, 0x2d, 0x35, 0x35, 0x35, 0x89, 0x58, 0xf5, 0x18, 0x02, 0x0d, - 0x0c, 0x0c, 0x49, 0x40, 0xdc, 0x0c, 0xc4, 0x5c, 0xf8, 0x34, 0xa6, 0xa5, 0xa5, 0x1d, 0x00, 0x61, - 0x4a, 0x2c, 0x3a, 0x00, 0xc4, 0xff, 0x9b, 0x98, 0x99, 0xef, 0x01, 0x69, 0x1b, 0x9a, 0x5a, 0xd4, - 0x2f, 0x2f, 0xff, 0x7f, 0x82, 0xbc, 0xfc, 0x9f, 0x46, 0x46, 0xc6, 0x7f, 0x40, 0x7e, 0x3f, 0x36, - 0xdf, 0x51, 0xc5, 0xa2, 0x79, 0x76, 0x76, 0xff, 0xbf, 0xbc, 0x7f, 0xff, 0x7f, 0x4b, 0x56, 0xd6, - 0xff, 0x06, 0x46, 0x46, 0xac, 0xbe, 0xa3, 0x9a, 0x45, 0x3f, 0x7f, 0xfe, 0x04, 0xe3, 0x3b, 0x7b, - 0xf6, 0x60, 0xf5, 0x1d, 0xd5, 0x2d, 0x02, 0x61, 0xb0, 0xef, 0xb2, 0xb3, 0x51, 0x7c, 0x47, 0x13, - 0x8b, 0xb0, 0xf9, 0xae, 0x5c, 0x4d, 0xed, 0x71, 0x46, 0x62, 0xe2, 0x21, 0xa2, 0x2d, 0x82, 0x26, - 0xe7, 0x03, 0x48, 0xf8, 0xfd, 0x24, 0x55, 0x55, 0xac, 0x16, 0xa1, 0xfb, 0xae, 0x9e, 0x87, 0xe7, - 0x2b, 0xbe, 0x94, 0x89, 0x6e, 0x51, 0x1a, 0x86, 0x45, 0x6a, 0x6a, 0x60, 0x43, 0xdf, 0x3e, 0x78, - 0xf0, 0xff, 0xd9, 0xa5, 0x4b, 0x28, 0xf8, 0xeb, 0x87, 0x0f, 0x10, 0xdf, 0xed, 0xdd, 0xfb, 0x7f, - 0x82, 0x82, 0x02, 0xde, 0x94, 0x49, 0x54, 0xd0, 0x7d, 0xff, 0xfa, 0xf5, 0x7f, 0x1b, 0x2f, 0xef, - 0x7f, 0x50, 0x9e, 0x42, 0xc6, 0x07, 0xdb, 0xdb, 0x51, 0x7c, 0xb7, 0x35, 0x27, 0x07, 0x67, 0xca, - 0x24, 0x3a, 0x8e, 0xbe, 0x7f, 0xf9, 0xf2, 0xff, 0xeb, 0xc7, 0x8f, 0x28, 0x18, 0x6b, 0xdc, 0x11, - 0xe1, 0x3b, 0xa2, 0x12, 0xc3, 0xeb, 0x3b, 0x77, 0xfe, 0xbf, 0x7d, 0xf8, 0x10, 0x67, 0xbc, 0x21, - 0xfb, 0x0e, 0x6c, 0x19, 0x23, 0x23, 0x28, 0xee, 0x8e, 0x20, 0x45, 0x47, 0x1a, 0x51, 0x16, 0xad, - 0x8b, 0x8f, 0xff, 0xbf, 0xbd, 0xa0, 0x80, 0x12, 0x8b, 0x92, 0xf0, 0x5a, 0xf4, 0xe9, 0xf5, 0xeb, - 0xff, 0xef, 0x1e, 0x3d, 0xfa, 0xbf, 0x32, 0x24, 0xe4, 0xff, 0x86, 0xa4, 0x24, 0x30, 0x1b, 0x14, - 0x77, 0x54, 0x0d, 0x3a, 0x9c, 0x89, 0xa1, 0xb5, 0x95, 0xbc, 0xc4, 0x80, 0x2f, 0x1f, 0x7d, 0x7c, - 0xf9, 0x12, 0xc3, 0x47, 0x3f, 0xbe, 0x7f, 0x27, 0x2f, 0x79, 0xe3, 0xcb, 0x47, 0x30, 0xbc, 0x3e, - 0x31, 0xf1, 0xff, 0xb6, 0xbc, 0x3c, 0xca, 0x32, 0x2c, 0xd1, 0xa9, 0x0e, 0x98, 0x79, 0x29, 0x2a, - 0x82, 0x06, 0x4d, 0xa1, 0x4a, 0xf3, 0x6a, 0x82, 0x2e, 0x15, 0x1f, 0xdd, 0xaa, 0x72, 0x7a, 0x35, - 0x4e, 0x40, 0xf9, 0xaa, 0x83, 0xe6, 0xcd, 0x2d, 0x62, 0x31, 0xa8, 0xf1, 0x08, 0x6a, 0x44, 0x12, - 0xab, 0x1e, 0x00, 0x39, 0x9d, 0x1a, 0x1b, 0x9d, 0x19, 0x48, 0x46, 0x00, 0x00, 0x00, 0x00, 0x49, - 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, + 0xce, 0x00, 0x00, 0x01, 0xf4, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x96, 0xbd, 0x4b, 0x42, + 0x51, 0x18, 0x87, 0xbd, 0x08, 0x59, 0x41, 0xe1, 0x26, 0xda, 0xa0, 0x86, 0x3a, 0xf8, 0x17, 0x34, + 0x84, 0x4d, 0x35, 0x45, 0x4b, 0x34, 0xb4, 0x3a, 0x38, 0xa8, 0xa3, 0xee, 0x96, 0x04, 0x0e, 0xa5, + 0x72, 0x0d, 0x3f, 0x51, 0xf7, 0x0b, 0x6d, 0x49, 0x8b, 0x8a, 0x44, 0x43, 0x4d, 0xad, 0x41, 0xd6, + 0xe6, 0xe0, 0xe2, 0x07, 0x78, 0x51, 0x41, 0x7c, 0x7b, 0xcf, 0xc5, 0x44, 0xbc, 0x1e, 0xef, 0x87, + 0x3a, 0x3c, 0x9c, 0xab, 0xdc, 0x7b, 0x1e, 0x7e, 0xe7, 0xbc, 0xe7, 0x43, 0x03, 0x00, 0x1a, 0x35, + 0x64, 0x32, 0x99, 0x2b, 0xe4, 0x25, 0x9b, 0xcd, 0x96, 0x90, 0x0b, 0xa9, 0xf7, 0x45, 0x7f, 0x84, + 0x34, 0x1a, 0x37, 0x12, 0x46, 0x76, 0x69, 0x1f, 0xe5, 0x72, 0x39, 0x2b, 0x4a, 0xbe, 0x11, 0x0e, + 0x79, 0x42, 0xbe, 0x10, 0xa3, 0x52, 0x51, 0x0d, 0x81, 0x5b, 0xad, 0xf6, 0x17, 0xdb, 0xe3, 0x45, + 0x1f, 0x61, 0x82, 0x73, 0x22, 0x4a, 0x26, 0x93, 0x47, 0xf8, 0x7c, 0x32, 0x91, 0x9e, 0x29, 0x16, + 0xc5, 0xcc, 0x66, 0x88, 0x9b, 0xcd, 0xa3, 0x1b, 0x86, 0x19, 0xe3, 0xef, 0xd8, 0x7c, 0x3a, 0x96, + 0x65, 0xf7, 0xb1, 0xe3, 0x4f, 0xa4, 0x9e, 0x4e, 0xa7, 0x7f, 0x50, 0xf6, 0x11, 0x8d, 0x46, 0x77, + 0x14, 0x8b, 0x0a, 0x2e, 0x17, 0xf4, 0xda, 0x6d, 0x78, 0xf6, 0x7a, 0x21, 0xc4, 0x30, 0x0b, 0xd3, + 0x4d, 0x86, 0x6f, 0x80, 0xf0, 0xe4, 0x59, 0xcd, 0x1c, 0x09, 0xa2, 0xe1, 0x70, 0x28, 0x50, 0x2f, + 0x97, 0xa9, 0xe9, 0x50, 0x02, 0x84, 0x62, 0xb1, 0xb8, 0xbd, 0xb2, 0x88, 0x20, 0xa4, 0xf3, 0xf9, + 0x44, 0xe9, 0xd6, 0x2e, 0xa2, 0xa5, 0x4b, 0x27, 0x12, 0xf2, 0x45, 0x93, 0x72, 0xae, 0xcd, 0xd0, + 0x66, 0xed, 0xf6, 0x85, 0xa2, 0xf9, 0x74, 0x77, 0x06, 0x03, 0x24, 0x82, 0x41, 0xc0, 0xe2, 0xd0, + 0xc9, 0x11, 0x79, 0x44, 0x22, 0x87, 0x83, 0x2a, 0x9a, 0xa6, 0xab, 0x54, 0x20, 0x6e, 0xb5, 0x8e, + 0x89, 0x70, 0x51, 0x65, 0xca, 0x1f, 0xba, 0xc1, 0x00, 0x58, 0x9b, 0x0d, 0x22, 0x7a, 0xfd, 0x94, + 0x47, 0xa7, 0x53, 0x94, 0xae, 0xe4, 0xf7, 0x53, 0x2b, 0x53, 0xf6, 0x1c, 0xf5, 0x5a, 0x2d, 0xe8, + 0x36, 0x9b, 0x53, 0xf8, 0x4e, 0x87, 0x9e, 0xce, 0x62, 0xa1, 0xae, 0x3b, 0xc5, 0xc5, 0xb0, 0x8c, + 0xff, 0x74, 0x82, 0x8c, 0x61, 0x78, 0xec, 0xe7, 0x6d, 0x66, 0x3a, 0x3c, 0xb2, 0x44, 0xaf, 0x91, + 0xc8, 0xaa, 0x22, 0xf7, 0x52, 0x51, 0x9f, 0xe7, 0x81, 0xef, 0x76, 0x21, 0xac, 0xd3, 0x09, 0x6d, + 0xbf, 0xd7, 0xdb, 0xc0, 0xd0, 0x61, 0x31, 0xdc, 0x1b, 0x8d, 0xa4, 0xa2, 0xa6, 0x3c, 0x98, 0x4c, + 0xea, 0x8b, 0x41, 0xce, 0x3a, 0x22, 0x89, 0x68, 0xe5, 0xbd, 0x2c, 0x85, 0xe2, 0x75, 0x54, 0x0d, + 0x85, 0xe8, 0x0b, 0x36, 0x10, 0x18, 0x73, 0x1c, 0xb7, 0xb5, 0xb9, 0x2d, 0x48, 0xab, 0x4d, 0x28, + 0xda, 0x82, 0xd4, 0x6e, 0xaa, 0xa4, 0xf3, 0xb5, 0x6e, 0xaa, 0xb4, 0x63, 0x62, 0x6d, 0x22, 0xa9, + 0x83, 0x0f, 0x4f, 0x56, 0x3b, 0x4a, 0x46, 0x44, 0x54, 0x28, 0x14, 0x0e, 0x55, 0x89, 0xa4, 0x8e, + 0xf2, 0x7c, 0x3e, 0xbf, 0x37, 0x39, 0xca, 0x1b, 0x78, 0x8c, 0x37, 0xb0, 0x7d, 0x97, 0x4a, 0xa5, + 0xea, 0x72, 0x92, 0x4a, 0xa5, 0x44, 0x97, 0x13, 0x4c, 0x78, 0xaa, 0xe6, 0xba, 0x15, 0x59, 0xb6, + 0x2e, 0xc8, 0x50, 0xcd, 0x5f, 0xb7, 0x50, 0x7e, 0xa0, 0x48, 0x24, 0x17, 0xbc, 0x90, 0x5c, 0xa3, + 0xa0, 0x8a, 0x94, 0x31, 0xd5, 0xa5, 0xd4, 0xfb, 0x7f, 0x24, 0x96, 0x19, 0xb2, 0xcd, 0x00, 0xac, + 0xcd, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, }; const BITMAP_OPAQUE hidden_pin_xpm[1] = {{ png, sizeof( png ), "hidden_pin_xpm" }}; diff --git a/bitmaps_png/cpp_26/import_footprint_names.cpp b/bitmaps_png/cpp_26/import_footprint_names.cpp index ef81a32dac..1f51612551 100644 --- a/bitmaps_png/cpp_26/import_footprint_names.cpp +++ b/bitmaps_png/cpp_26/import_footprint_names.cpp @@ -8,90 +8,88 @@ 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, 0x22, 0x49, 0x44, 0x41, 0x54, 0x48, 0x4b, 0xb5, 0x96, 0x59, 0x4c, 0x5c, - 0x65, 0x14, 0xc7, 0xc7, 0x28, 0x3b, 0x6d, 0x11, 0x1f, 0x1a, 0x23, 0x46, 0xfa, 0xa2, 0x7d, 0x11, - 0xe3, 0x0b, 0xa6, 0xd4, 0x54, 0x1e, 0x88, 0x1a, 0xa1, 0x0a, 0xb4, 0xd5, 0xb6, 0x50, 0xa0, 0x36, - 0x94, 0x58, 0x13, 0x12, 0xe3, 0xfe, 0xa8, 0xd4, 0x17, 0x7d, 0x40, 0x53, 0xa7, 0x2c, 0xb2, 0xaf, - 0x03, 0x88, 0x82, 0x2c, 0x01, 0xc2, 0x0e, 0x65, 0x91, 0x25, 0x4a, 0x59, 0xc2, 0xbe, 0xaf, 0x33, - 0x30, 0xc3, 0xbe, 0x0c, 0x70, 0x3c, 0xff, 0x03, 0x77, 0x18, 0xca, 0xf6, 0xe4, 0x24, 0xff, 0xdc, - 0x73, 0xef, 0x9d, 0x39, 0xbf, 0xef, 0x2c, 0xdf, 0xf9, 0x46, 0xa5, 0x52, 0xa9, 0x9c, 0x59, 0x6f, - 0xb2, 0xdc, 0xff, 0x27, 0xc1, 0xb7, 0x33, 0x4b, 0x75, 0x49, 0xaf, 0x37, 0x90, 0x56, 0xab, 0x23, - 0xdd, 0xec, 0x2c, 0xcd, 0xce, 0xcd, 0xd1, 0x9c, 0x5e, 0x4f, 0x53, 0x53, 0x53, 0xa4, 0x37, 0x18, - 0xc8, 0x30, 0x3f, 0x2f, 0x9a, 0xd1, 0x6a, 0x69, 0x61, 0x61, 0x61, 0x47, 0x8b, 0x8b, 0xa2, 0xc5, - 0xa5, 0x25, 0xd1, 0x12, 0xb4, 0xbc, 0x2c, 0xc2, 0xef, 0x15, 0x1b, 0x5a, 0x5d, 0x5d, 0x25, 0x30, - 0x00, 0x72, 0x9f, 0x99, 0x99, 0xa1, 0xfa, 0xfa, 0x06, 0x9a, 0x9c, 0x9a, 0xa6, 0xe9, 0x19, 0x2d, - 0x8d, 0x8f, 0x8f, 0x93, 0x46, 0xa3, 0xa1, 0xc1, 0xa1, 0x21, 0x13, 0xb8, 0xae, 0xae, 0x8e, 0x2a, - 0x2a, 0x2a, 0x04, 0x3a, 0x0f, 0x31, 0x30, 0x33, 0x33, 0x73, 0x07, 0xb8, 0xab, 0xaa, 0xaa, 0x2a, - 0x6a, 0x68, 0x68, 0x30, 0x2d, 0x60, 0x72, 0x72, 0x92, 0x56, 0x56, 0x56, 0x00, 0x42, 0x64, 0x2a, - 0x77, 0x44, 0x32, 0x32, 0x32, 0x22, 0xab, 0xd6, 0xea, 0x76, 0x22, 0x1b, 0x1a, 0x1e, 0xa6, 0x8c, - 0x8c, 0x0c, 0x79, 0x6e, 0xd8, 0x8d, 0xac, 0xb2, 0xb2, 0x92, 0xaa, 0xab, 0xab, 0x77, 0x1c, 0xb3, - 0x23, 0x80, 0x94, 0x68, 0x6a, 0x6a, 0x6a, 0xe4, 0xdd, 0x32, 0xdb, 0xcb, 0xec, 0xbc, 0xb4, 0xac, - 0x8c, 0xe2, 0xe2, 0xe2, 0x94, 0x88, 0xf6, 0x40, 0x58, 0x09, 0x20, 0x45, 0x45, 0x45, 0x34, 0xcc, - 0x10, 0x3d, 0x47, 0x01, 0x08, 0x60, 0xa3, 0x63, 0x63, 0xa6, 0x95, 0xe3, 0x1e, 0x8e, 0xe1, 0x10, - 0x20, 0xac, 0x18, 0x82, 0x0d, 0xa7, 0x10, 0x22, 0x8f, 0x8f, 0x8f, 0xa7, 0xc4, 0xc4, 0x44, 0x5a, - 0x5f, 0x5f, 0xdf, 0x03, 0xa1, 0x16, 0x70, 0x86, 0x34, 0xc9, 0x17, 0x92, 0x92, 0x68, 0x64, 0x74, - 0x54, 0xd2, 0x33, 0xc6, 0x69, 0xcc, 0xca, 0xca, 0x92, 0x95, 0x9b, 0x3b, 0x87, 0x43, 0x3c, 0x5f, - 0x5b, 0x5b, 0x13, 0xc1, 0x86, 0x53, 0x08, 0x80, 0xa8, 0xa8, 0x28, 0xb9, 0x6e, 0x6c, 0x6c, 0x98, - 0x81, 0x78, 0xf5, 0x8d, 0x8d, 0x8d, 0x02, 0xc2, 0xcb, 0x98, 0x98, 0x18, 0x4a, 0x4e, 0x4e, 0x96, - 0x08, 0x00, 0x80, 0x73, 0xa4, 0x63, 0xc5, 0xdc, 0x39, 0x3b, 0x84, 0x0d, 0x47, 0x90, 0x62, 0x1b, - 0x8d, 0x46, 0x4a, 0xe2, 0x85, 0x02, 0x84, 0xeb, 0xe6, 0xe6, 0xe6, 0x1e, 0x08, 0xf9, 0x1f, 0xe3, - 0x88, 0x50, 0x0b, 0x80, 0x00, 0x45, 0x3d, 0x94, 0x14, 0x21, 0x5d, 0x88, 0x00, 0x00, 0x40, 0xb1, - 0x6a, 0x38, 0x85, 0x0d, 0xc7, 0x10, 0x6c, 0x38, 0x85, 0xcc, 0x41, 0x5b, 0x5b, 0x5b, 0x7b, 0x20, - 0x74, 0x51, 0x53, 0x53, 0x93, 0x14, 0x1c, 0xa0, 0xe6, 0xe6, 0x66, 0x9a, 0x35, 0xcc, 0x88, 0x73, - 0x74, 0x60, 0x74, 0x74, 0xb4, 0x74, 0x10, 0x04, 0x7b, 0x7a, 0x7a, 0x5a, 0xda, 0x1f, 0x36, 0x3a, - 0x16, 0xf7, 0x8a, 0x0d, 0xc7, 0x47, 0x82, 0x90, 0xa2, 0xf1, 0x89, 0x09, 0x29, 0xb8, 0x02, 0xfa, - 0x22, 0xde, 0x8b, 0xee, 0x67, 0x06, 0x72, 0x07, 0xea, 0x24, 0x95, 0x7d, 0x7d, 0x7d, 0x22, 0x38, - 0xe8, 0xef, 0xef, 0x17, 0xc1, 0x1e, 0x18, 0x18, 0x10, 0x29, 0xf6, 0xf6, 0xf6, 0xf6, 0x3e, 0x10, - 0xee, 0xf7, 0x81, 0x10, 0x91, 0x39, 0xe8, 0xdb, 0x14, 0x6f, 0xf2, 0x8d, 0xb5, 0xa3, 0xcf, 0x13, - 0xdf, 0xa5, 0xb1, 0x89, 0x61, 0xd9, 0xa8, 0xf8, 0x1e, 0xba, 0x12, 0x57, 0xa4, 0xb4, 0xb8, 0xb8, - 0x58, 0x6a, 0x88, 0xe6, 0x80, 0x8d, 0x67, 0x47, 0x82, 0xc2, 0xc2, 0xc2, 0xee, 0xe1, 0x0b, 0xd8, - 0x43, 0xf8, 0x41, 0x7e, 0x7e, 0x3e, 0x75, 0x74, 0x74, 0x30, 0xc8, 0x87, 0xae, 0xa5, 0xd8, 0xd0, - 0x75, 0x8d, 0x2d, 0x7d, 0x1a, 0x77, 0x81, 0xc6, 0xb5, 0x83, 0x92, 0x7f, 0xa4, 0x02, 0x3f, 0x56, - 0x3e, 0xb0, 0x21, 0x3c, 0x57, 0x74, 0x68, 0xea, 0x6a, 0xdb, 0xf3, 0xa9, 0xe0, 0xef, 0x84, 0x03, - 0x0a, 0x89, 0xb8, 0x48, 0xd7, 0x52, 0x6d, 0xc8, 0x2f, 0xdb, 0x9e, 0x02, 0xf3, 0x4e, 0x53, 0x70, - 0xbc, 0x0b, 0xb5, 0x0d, 0xd4, 0x0b, 0x4c, 0x01, 0x28, 0x8e, 0x95, 0x26, 0x50, 0x1a, 0xe3, 0xd0, - 0xae, 0xf3, 0xfb, 0xe5, 0x3c, 0xbd, 0xf7, 0xc0, 0xf2, 0x80, 0x2e, 0x47, 0x58, 0xd1, 0x87, 0x69, - 0x0c, 0xfa, 0xc3, 0x9e, 0x82, 0x0a, 0x4f, 0xd3, 0xdd, 0x72, 0x07, 0x0a, 0x4e, 0x3d, 0x4f, 0xa5, - 0xff, 0x6a, 0xc4, 0x99, 0x02, 0x50, 0x9c, 0xa3, 0x0b, 0x8f, 0xdd, 0x47, 0xb7, 0x1f, 0xba, 0xd0, - 0xfb, 0xd1, 0x96, 0x07, 0xe4, 0x1d, 0x6b, 0x25, 0x11, 0xdd, 0xcc, 0xb6, 0xa3, 0xa0, 0x02, 0x8e, - 0xa8, 0xd4, 0x81, 0xee, 0xd5, 0x3a, 0xd2, 0xdd, 0xec, 0x73, 0x94, 0x54, 0xf5, 0x83, 0xd4, 0xa3, - 0xa4, 0xa4, 0x44, 0xe6, 0x1e, 0xf6, 0x61, 0x61, 0x61, 0x21, 0xcd, 0xf2, 0x84, 0xc1, 0x73, 0x73, - 0x90, 0x69, 0x04, 0x1d, 0x05, 0xfa, 0x20, 0xc6, 0x92, 0xae, 0x26, 0xdb, 0xd0, 0x8d, 0x2c, 0x3b, - 0x0a, 0xf8, 0xeb, 0x14, 0xdd, 0x29, 0x3e, 0x43, 0x21, 0x15, 0xcf, 0xd2, 0x27, 0x35, 0x8e, 0x14, - 0x9c, 0xfb, 0x02, 0xfd, 0x98, 0x1b, 0x2c, 0xa3, 0xaa, 0xb7, 0xb7, 0x97, 0xba, 0xba, 0xba, 0xc4, - 0x71, 0x67, 0x67, 0xa7, 0x80, 0xcd, 0x41, 0x68, 0x96, 0x63, 0x41, 0xd0, 0x95, 0x44, 0x6b, 0xfa, - 0x88, 0x9b, 0xc1, 0xff, 0x4f, 0x7b, 0x89, 0xea, 0x4e, 0xc9, 0x19, 0x0a, 0x2e, 0x73, 0x10, 0x05, - 0xe5, 0x38, 0xd2, 0x37, 0x29, 0x5e, 0x34, 0x67, 0xd0, 0x99, 0xf6, 0x1a, 0x5a, 0x1e, 0x51, 0x25, - 0x24, 0x24, 0x08, 0x08, 0x57, 0x80, 0x4f, 0x04, 0xf9, 0xc4, 0xed, 0xa4, 0x0f, 0x51, 0xdd, 0xca, - 0xe1, 0xa6, 0xc8, 0x3f, 0x45, 0xb7, 0xb9, 0x5e, 0x10, 0xec, 0x1b, 0x31, 0xcf, 0x53, 0x51, 0x4b, - 0xaa, 0xa4, 0x2b, 0x3d, 0x3d, 0x5d, 0x36, 0xf1, 0x04, 0xef, 0x47, 0xcc, 0xcb, 0xc8, 0xc8, 0x48, - 0x01, 0x4d, 0x4c, 0x4c, 0x1a, 0x19, 0xf4, 0xd6, 0xb1, 0x20, 0xc8, 0x37, 0xc1, 0x5a, 0x9a, 0x02, - 0x30, 0x34, 0x06, 0x80, 0xfe, 0xac, 0x80, 0xd8, 0x73, 0x94, 0xd3, 0x10, 0x25, 0xa9, 0xc1, 0x64, - 0x48, 0x49, 0x49, 0xa1, 0x1e, 0x4e, 0x23, 0xb6, 0x86, 0x5a, 0xad, 0xa6, 0xd4, 0xd4, 0x54, 0x2a, - 0x2f, 0x2f, 0xa7, 0xd0, 0xd0, 0xd0, 0x58, 0x06, 0xbd, 0x7e, 0x22, 0x08, 0xb5, 0xf2, 0xe5, 0x14, - 0x22, 0x32, 0xa4, 0xf1, 0x7a, 0x86, 0x2d, 0x05, 0x46, 0xbd, 0x42, 0x8f, 0x3a, 0x0b, 0xa9, 0xa5, - 0xa5, 0x45, 0x20, 0x03, 0x83, 0x83, 0x14, 0x1e, 0x1e, 0x2e, 0xf3, 0xae, 0xbe, 0xbe, 0x5e, 0x6a, - 0x85, 0x4d, 0xef, 0xe7, 0xe7, 0x17, 0xc5, 0x10, 0x57, 0x96, 0xed, 0x89, 0x20, 0x81, 0xfd, 0xc6, - 0x69, 0x8c, 0xb7, 0x92, 0xe8, 0x3e, 0x8e, 0x78, 0x8d, 0xba, 0x47, 0xff, 0x91, 0xdc, 0xe3, 0x14, - 0xc6, 0x31, 0xd2, 0xdd, 0xdd, 0x4d, 0xb9, 0xb9, 0xb9, 0xb2, 0xbf, 0x00, 0x66, 0xc8, 0xb6, 0xa7, - 0xa7, 0xe7, 0x4f, 0x0c, 0x70, 0x61, 0x59, 0xb3, 0x9e, 0x52, 0xdd, 0xfa, 0xf9, 0x55, 0xba, 0xa1, - 0x76, 0x3e, 0xa0, 0x2b, 0x0f, 0xce, 0xee, 0x83, 0x79, 0x45, 0x58, 0x52, 0x48, 0xe4, 0x05, 0x1a, - 0x1a, 0xef, 0x95, 0x71, 0x84, 0xa2, 0x03, 0xd4, 0xc9, 0x1d, 0xf7, 0xf8, 0x71, 0xbb, 0x1c, 0xf5, - 0xa8, 0x0f, 0x4f, 0xfe, 0x2d, 0x0f, 0x0f, 0x8f, 0xfb, 0xec, 0xfc, 0x65, 0x96, 0x15, 0xb3, 0x55, - 0x90, 0xca, 0xb0, 0x30, 0x4b, 0x3a, 0xfd, 0xd4, 0x01, 0x7d, 0x99, 0xe8, 0x65, 0x82, 0x5c, 0x7e, - 0x68, 0x43, 0x9f, 0xc5, 0xbd, 0x43, 0x86, 0xc5, 0x39, 0xca, 0xcb, 0xcb, 0x93, 0xe3, 0x44, 0xc7, - 0xa7, 0x71, 0x4f, 0x4f, 0x8f, 0xd4, 0x02, 0xc7, 0x38, 0x06, 0x6e, 0x6d, 0x6d, 0xad, 0xd1, 0xcd, - 0xcd, 0xed, 0x6b, 0x06, 0xbc, 0xc4, 0x7a, 0x46, 0x81, 0x08, 0xc8, 0xc9, 0xc9, 0xe9, 0x6d, 0xec, - 0x5e, 0x84, 0x8c, 0x1d, 0xde, 0xde, 0xde, 0xbe, 0x3b, 0xeb, 0xbc, 0x05, 0xe2, 0xa3, 0x76, 0xa0, - 0xef, 0x34, 0xfe, 0xbc, 0xf1, 0x76, 0x8e, 0xec, 0xd6, 0xd6, 0x56, 0x13, 0x08, 0x11, 0xb4, 0xb5, - 0xb5, 0x49, 0x5d, 0xca, 0xca, 0xca, 0xe6, 0x5d, 0x5d, 0x5d, 0x03, 0x19, 0xf0, 0x1c, 0xeb, 0x69, - 0x73, 0x88, 0x80, 0xf8, 0x73, 0xc9, 0xb8, 0x3b, 0x4a, 0x94, 0xa1, 0x09, 0x1b, 0xa0, 0xab, 0xea, - 0xb3, 0xa4, 0x2e, 0xf8, 0xca, 0x74, 0x72, 0x62, 0xbc, 0x00, 0x86, 0x4e, 0x43, 0xfa, 0xe6, 0xf8, - 0x44, 0xe6, 0x03, 0xd3, 0x98, 0x96, 0x96, 0xd6, 0x60, 0x61, 0x61, 0xf1, 0x06, 0xfb, 0xb2, 0x43, - 0x3d, 0x9e, 0x84, 0x28, 0x20, 0x67, 0xd5, 0x13, 0x7f, 0x20, 0xf9, 0xc8, 0x48, 0xfb, 0x5e, 0x13, - 0x40, 0xbf, 0x3f, 0x52, 0x6f, 0x97, 0x96, 0x96, 0xfe, 0x6a, 0xfe, 0xee, 0x10, 0x5d, 0x64, 0xbd, - 0xa8, 0x32, 0xab, 0xc7, 0x61, 0xfa, 0x0f, 0x95, 0x20, 0x3b, 0xce, 0x3e, 0xbe, 0xf9, 0x26, 0x00, - 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, + 0xce, 0x00, 0x00, 0x05, 0x06, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x9d, 0x96, 0x59, 0x4c, 0x94, + 0x57, 0x14, 0xc7, 0xa7, 0x36, 0xb6, 0x69, 0x6a, 0xfb, 0x42, 0x9f, 0xfa, 0xe0, 0x83, 0x6f, 0x6d, + 0xe4, 0xb1, 0x29, 0xa6, 0xf5, 0xb1, 0xc5, 0xf6, 0xa1, 0x61, 0x53, 0x09, 0x58, 0x04, 0x42, 0x20, + 0x68, 0x4c, 0x59, 0x85, 0xb2, 0x23, 0x5b, 0x0d, 0x24, 0xf0, 0xd2, 0x6a, 0x40, 0x44, 0x24, 0x31, + 0x40, 0x02, 0x9a, 0xa2, 0x61, 0x71, 0x00, 0x41, 0x06, 0x85, 0x2a, 0x0c, 0x13, 0x28, 0xfb, 0x26, + 0xca, 0x36, 0x6c, 0xc3, 0xc0, 0x0c, 0xf3, 0xcd, 0x72, 0x7a, 0xfe, 0xb7, 0xf3, 0x4d, 0x87, 0xe1, + 0x73, 0x49, 0x6f, 0x72, 0xf2, 0xdd, 0xb9, 0xf7, 0x7e, 0xe7, 0x77, 0xb6, 0x7b, 0xbe, 0x51, 0x11, + 0x91, 0xca, 0x5d, 0x78, 0xbc, 0xef, 0xeb, 0xeb, 0x1b, 0x56, 0x59, 0x59, 0xf9, 0xe7, 0xb5, 0x6b, + 0xd7, 0x34, 0x78, 0xde, 0xbc, 0x79, 0xf3, 0x6e, 0x55, 0x55, 0x95, 0xa2, 0xdc, 0xb8, 0x71, 0xe3, + 0x6e, 0xd9, 0xef, 0x7f, 0x34, 0xf8, 0x7c, 0xf3, 0x6d, 0x0c, 0xbf, 0xfb, 0x91, 0xa7, 0x3e, 0x97, + 0x5e, 0x05, 0xd0, 0x11, 0x8d, 0x46, 0xa3, 0xbb, 0x7f, 0xff, 0x3e, 0x0d, 0x0d, 0x0d, 0x51, 0x5b, + 0x5b, 0x1b, 0xed, 0xed, 0xed, 0x91, 0xcd, 0x66, 0x13, 0x62, 0xb7, 0xdb, 0xc9, 0xe1, 0x70, 0xb8, + 0x04, 0x7b, 0xaf, 0x5e, 0xbd, 0xa2, 0x27, 0x7f, 0x3d, 0x97, 0xbe, 0x3f, 0xf5, 0x43, 0x0e, 0xbf, + 0xff, 0xf1, 0xbb, 0x82, 0x3e, 0x65, 0x4b, 0xf5, 0x2f, 0x5e, 0xbc, 0x20, 0x8c, 0xd5, 0xd5, 0x55, + 0xea, 0xeb, 0xeb, 0x7b, 0x2d, 0xc8, 0x6c, 0x36, 0xd3, 0xc2, 0xc2, 0x02, 0x3d, 0x7c, 0xa8, 0xa6, + 0xc1, 0x21, 0x9d, 0xdd, 0xe7, 0xe4, 0x49, 0xc0, 0x3e, 0x79, 0x2b, 0x28, 0x33, 0x33, 0xb3, 0x90, + 0x15, 0x6f, 0x93, 0x73, 0x48, 0x92, 0x44, 0x5d, 0x5d, 0x5d, 0x6f, 0xf4, 0x68, 0x71, 0x71, 0x91, + 0x3a, 0x3b, 0x1f, 0x91, 0x56, 0x3b, 0x44, 0xc3, 0x23, 0x23, 0x8e, 0xaf, 0x4f, 0x9c, 0xc8, 0x87, + 0xc1, 0xaf, 0x05, 0xe5, 0xe6, 0xe6, 0xfe, 0xc2, 0x21, 0x7b, 0xec, 0x80, 0x06, 0x1e, 0x78, 0x74, + 0x76, 0x76, 0xd2, 0xda, 0xda, 0x9a, 0x22, 0x48, 0x36, 0x64, 0x7d, 0x7d, 0x9d, 0x9e, 0x3d, 0x7b, + 0x4e, 0x2d, 0xad, 0x6d, 0xfc, 0xdb, 0x42, 0x03, 0x83, 0x83, 0x8e, 0xe3, 0xc7, 0xbf, 0x4c, 0x62, + 0xd8, 0x87, 0x07, 0x40, 0x71, 0x71, 0x71, 0x3f, 0xdf, 0xb9, 0x73, 0xa7, 0x9f, 0x15, 0xec, 0xc9, + 0xde, 0xe8, 0x74, 0x3a, 0x1a, 0x1f, 0x1f, 0x27, 0xab, 0xd5, 0xba, 0x0f, 0x24, 0xc3, 0x30, 0xb0, + 0x66, 0x34, 0x1a, 0x69, 0x6a, 0x6a, 0x9a, 0x1e, 0x3c, 0x78, 0x20, 0x3c, 0xb4, 0x58, 0xf6, 0xe8, + 0xb1, 0x46, 0x23, 0x79, 0x79, 0x79, 0x05, 0x30, 0xec, 0x90, 0x0b, 0x94, 0x90, 0x90, 0xf0, 0x63, + 0x69, 0x69, 0xe9, 0xdf, 0x3c, 0xdf, 0x92, 0x21, 0x2b, 0x2b, 0x2b, 0x54, 0x5b, 0x5b, 0x4b, 0xc3, + 0xc3, 0xc3, 0x34, 0x3a, 0x3a, 0x2a, 0x80, 0xd3, 0xd3, 0xd3, 0x34, 0x37, 0x37, 0x47, 0xc8, 0xdf, + 0xe6, 0xe6, 0x26, 0xc9, 0x5e, 0xc3, 0xab, 0x8d, 0x8d, 0x0d, 0x1a, 0x19, 0x19, 0x61, 0xaf, 0x9a, + 0x39, 0xa7, 0xfd, 0x22, 0x6f, 0xad, 0x6a, 0xb5, 0xf1, 0xf0, 0xe1, 0xc3, 0x5f, 0x31, 0xec, 0x3d, + 0x40, 0x7c, 0x0a, 0x0a, 0x0a, 0x26, 0xd8, 0xca, 0x65, 0x19, 0x82, 0xd0, 0xe9, 0xf5, 0x7a, 0x82, + 0xa0, 0x18, 0x96, 0x97, 0x97, 0x69, 0x69, 0x69, 0x49, 0xe4, 0x02, 0x15, 0x06, 0x01, 0x48, 0xf6, + 0x0a, 0x1e, 0xc2, 0x13, 0xc0, 0xe0, 0x19, 0xc2, 0xd8, 0xa3, 0xe9, 0xa5, 0x01, 0xed, 0x20, 0xd5, + 0x37, 0xde, 0x1d, 0x67, 0xd0, 0x51, 0x55, 0x52, 0x52, 0x52, 0x1b, 0x87, 0x66, 0x9a, 0xde, 0x30, + 0xe4, 0x9c, 0xc8, 0x61, 0x83, 0x20, 0x64, 0xee, 0xb9, 0xc2, 0x9a, 0xc5, 0x62, 0xa1, 0xed, 0xed, + 0x6d, 0x91, 0x33, 0x44, 0x04, 0x06, 0xae, 0xad, 0x6f, 0xd0, 0xd1, 0x63, 0xc7, 0x82, 0x54, 0xf1, + 0xf1, 0xf1, 0xbf, 0x71, 0xc2, 0xbb, 0xfe, 0x0f, 0xc8, 0xb3, 0x30, 0xf0, 0xc4, 0x3a, 0x42, 0x09, + 0x0f, 0x21, 0x92, 0x64, 0x25, 0x6f, 0x6f, 0xef, 0x50, 0x55, 0x4e, 0x4e, 0xce, 0x21, 0x86, 0xd5, + 0xf1, 0xe5, 0xec, 0x74, 0x0f, 0x1d, 0x4a, 0xfa, 0xf6, 0xed, 0xdb, 0xd4, 0xd0, 0xd0, 0x40, 0x4d, + 0x4d, 0x4d, 0xd4, 0xd2, 0xd2, 0x42, 0xed, 0xed, 0xed, 0xd4, 0xdd, 0xdd, 0x4d, 0x4f, 0x9f, 0x3e, + 0xa5, 0xd9, 0xd9, 0xd9, 0x7d, 0x85, 0x21, 0xc3, 0x3c, 0x8d, 0xc3, 0x10, 0x20, 0x14, 0x03, 0xc3, + 0x3e, 0x60, 0xd8, 0x43, 0xce, 0xc1, 0x23, 0xf9, 0x20, 0x14, 0xa0, 0x3b, 0x20, 0x0c, 0x08, 0x09, + 0xac, 0x44, 0xf5, 0x29, 0x55, 0xa0, 0xe7, 0xdd, 0x72, 0x87, 0x62, 0xee, 0x02, 0x41, 0x2e, 0x5c, + 0xb8, 0x70, 0xe4, 0xca, 0x95, 0x2b, 0xdd, 0xac, 0xb8, 0x4f, 0x3e, 0x84, 0x5b, 0xdf, 0xdc, 0xdc, + 0x4c, 0x26, 0x93, 0xe9, 0x9d, 0x60, 0x4a, 0xc0, 0x03, 0x20, 0xa7, 0x67, 0x9f, 0x15, 0x16, 0x16, + 0x3e, 0xd9, 0xda, 0xda, 0x32, 0xcb, 0x30, 0x54, 0x5b, 0x7f, 0x7f, 0xbf, 0xf3, 0x7e, 0x28, 0xc3, + 0x94, 0x80, 0xee, 0x72, 0x00, 0x04, 0x39, 0x77, 0xee, 0xdc, 0x17, 0xe5, 0xe5, 0xe5, 0xbb, 0x50, + 0x88, 0x01, 0x85, 0xc8, 0x0d, 0xbc, 0xfb, 0x37, 0xb9, 0xd2, 0x3e, 0x98, 0x27, 0x50, 0x09, 0xaa, + 0x08, 0x42, 0x43, 0x6c, 0x6d, 0x6d, 0x1d, 0x6f, 0x6c, 0x6c, 0x14, 0xca, 0xd1, 0xbd, 0x5f, 0xbe, + 0x7c, 0x29, 0xc2, 0x27, 0x60, 0x4e, 0xaf, 0x3c, 0x61, 0x4a, 0x40, 0x59, 0x5e, 0x0b, 0xea, 0xed, + 0xed, 0xd5, 0x4d, 0x4e, 0x4d, 0x11, 0x60, 0xa8, 0xae, 0x9d, 0x9d, 0x1d, 0xda, 0xdd, 0xdd, 0xfd, + 0x0f, 0xe6, 0x16, 0x46, 0x25, 0xa0, 0xa7, 0xc8, 0xa0, 0xcf, 0x59, 0xbe, 0x93, 0x85, 0x5b, 0xcc, + 0x4f, 0x63, 0x63, 0x63, 0x33, 0x46, 0x56, 0xbe, 0xe3, 0x54, 0xee, 0x0e, 0x70, 0x87, 0x60, 0x0e, + 0x03, 0xde, 0xe6, 0xd5, 0xf5, 0xeb, 0xd7, 0x8b, 0x54, 0x67, 0xcf, 0x9e, 0x5d, 0x0d, 0x0a, 0x0a, + 0x72, 0xf0, 0xd3, 0x9e, 0x9a, 0x9a, 0x6a, 0x52, 0xab, 0xd5, 0x2b, 0xac, 0xc0, 0x82, 0xd8, 0xe2, + 0x96, 0x07, 0x07, 0x07, 0xd3, 0xe9, 0xd3, 0xa7, 0x45, 0x1f, 0x93, 0xab, 0x0a, 0xad, 0xa6, 0xa8, + 0xa8, 0x48, 0xac, 0xfb, 0xfb, 0xfb, 0x53, 0x5a, 0x5a, 0x9a, 0x80, 0x87, 0x87, 0x87, 0x13, 0xb7, + 0x33, 0x71, 0x66, 0x60, 0x60, 0x80, 0x58, 0x27, 0x95, 0x95, 0x95, 0xa1, 0xe9, 0x2e, 0xab, 0xce, + 0x9c, 0x39, 0xb3, 0x19, 0x19, 0x19, 0x69, 0xad, 0xab, 0xab, 0xd3, 0x47, 0x47, 0x47, 0x4b, 0x5c, + 0x0c, 0x36, 0x0e, 0x95, 0xc5, 0xc6, 0x4a, 0x71, 0x69, 0xfd, 0xfc, 0xfc, 0x84, 0xdc, 0xba, 0x75, + 0xcb, 0x95, 0xdc, 0x5f, 0x59, 0x31, 0xd6, 0x32, 0x32, 0x32, 0xe8, 0xde, 0xbd, 0x7b, 0x94, 0x92, + 0x92, 0x22, 0x3a, 0x78, 0x48, 0x48, 0x08, 0xf1, 0xa7, 0x46, 0x34, 0xd4, 0xd0, 0xd0, 0x50, 0x4a, + 0x4c, 0x4c, 0x14, 0x91, 0x70, 0x81, 0xb8, 0xb1, 0xa2, 0x9c, 0x27, 0x99, 0x6e, 0x80, 0x02, 0x2e, + 0x69, 0x09, 0x2e, 0x17, 0x17, 0x17, 0x53, 0x58, 0x58, 0x18, 0xa5, 0xa7, 0xa7, 0xd3, 0xc5, 0x8b, + 0x17, 0x05, 0x64, 0x72, 0x72, 0x52, 0x40, 0xf2, 0xf2, 0xf2, 0x0e, 0xb4, 0x26, 0x80, 0x2e, 0x5f, + 0xbe, 0x4c, 0xb1, 0xb1, 0xb1, 0xc4, 0xc6, 0x8b, 0xa6, 0x8c, 0x7d, 0x17, 0x28, 0x30, 0x30, 0xd0, + 0x11, 0x11, 0x11, 0x61, 0x85, 0x82, 0xab, 0x57, 0xaf, 0x1a, 0x11, 0x3a, 0x84, 0x02, 0x2f, 0x96, + 0x94, 0x94, 0x88, 0x36, 0x84, 0x3d, 0x54, 0x5f, 0x47, 0x47, 0x87, 0x98, 0xa3, 0x6b, 0xb8, 0x4a, + 0xd8, 0x09, 0xc4, 0x79, 0xec, 0x21, 0x9c, 0x9c, 0x67, 0x97, 0x21, 0x2e, 0x10, 0x20, 0xfc, 0x3f, + 0x61, 0xfd, 0xd2, 0xa5, 0x4b, 0x7b, 0x9c, 0x13, 0xfb, 0xfc, 0xfc, 0xbc, 0xa4, 0xd5, 0x6a, 0xc5, + 0x4b, 0x9c, 0x33, 0xf1, 0x1d, 0xc2, 0x1c, 0x61, 0x52, 0x04, 0xb9, 0x79, 0x04, 0x08, 0xf6, 0xab, + 0xb9, 0x4f, 0xda, 0x3d, 0x41, 0x72, 0xe8, 0x7a, 0x7a, 0x7a, 0x16, 0x71, 0x88, 0xef, 0x8e, 0xb5, + 0xa2, 0xa2, 0x42, 0xbc, 0x80, 0x62, 0x90, 0x2d, 0x4d, 0xe3, 0x10, 0x4e, 0x4c, 0x4c, 0x88, 0x79, + 0x7e, 0x7e, 0xfe, 0x81, 0x6e, 0x8e, 0x73, 0x59, 0x59, 0x59, 0x94, 0x9d, 0x9d, 0x2d, 0xce, 0xe0, + 0x6f, 0x00, 0xf6, 0xf6, 0x15, 0x43, 0x7d, 0x7d, 0xbd, 0x1e, 0x40, 0x1c, 0xe0, 0xbb, 0x23, 0x45, + 0xc7, 0xc4, 0x50, 0x0c, 0x4b, 0x75, 0x75, 0xb5, 0x90, 0xe4, 0xe4, 0x64, 0x0a, 0x08, 0x08, 0xa0, + 0x2d, 0x83, 0x41, 0x24, 0x1f, 0xe7, 0xb8, 0x37, 0x8a, 0xcf, 0x37, 0x72, 0x88, 0x0a, 0x05, 0x88, + 0xdb, 0x98, 0x28, 0x0c, 0xe4, 0x14, 0x55, 0x89, 0xaf, 0xb3, 0x00, 0xc9, 0xe5, 0x0d, 0xe1, 0x0e, + 0x6e, 0xe6, 0xcf, 0xf7, 0x1a, 0x6f, 0x1a, 0x70, 0xa8, 0xa6, 0xa6, 0x46, 0x32, 0x39, 0x07, 0x57, + 0xa0, 0x05, 0x6b, 0x1c, 0x4a, 0x0b, 0xe7, 0xca, 0xcc, 0x96, 0xdb, 0x38, 0xb7, 0x02, 0xc8, 0x06, + 0xda, 0x0d, 0x06, 0x83, 0xe9, 0xfc, 0xf9, 0xf3, 0x0e, 0xae, 0x3a, 0x1b, 0xce, 0xcf, 0xcc, 0xcc, + 0x98, 0xf1, 0x3b, 0x2a, 0x2a, 0xca, 0xc1, 0xe7, 0x97, 0xfe, 0x01, 0x59, 0x66, 0x79, 0x68, 0xc5, + 0x68, 0xb6, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, }; const BITMAP_OPAQUE import_footprint_names_xpm[1] = {{ png, sizeof( png ), "import_footprint_names_xpm" }}; diff --git a/bitmaps_png/cpp_26/py_script.cpp b/bitmaps_png/cpp_26/py_script.cpp new file mode 100644 index 0000000000..e621814637 --- /dev/null +++ b/bitmaps_png/cpp_26/py_script.cpp @@ -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 + +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, 0x2f, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xad, 0x96, 0x4d, 0x6f, 0x14, + 0xd9, 0x15, 0x86, 0x9f, 0x5b, 0x75, 0xab, 0xab, 0x3f, 0xdc, 0x6e, 0x5b, 0x06, 0x0f, 0x99, 0xcc, + 0xe0, 0xb1, 0x3b, 0x0a, 0xd2, 0x10, 0x69, 0x3c, 0x2d, 0x88, 0x8c, 0x64, 0x40, 0x10, 0x90, 0x50, + 0x94, 0x59, 0x8d, 0x66, 0x97, 0x5d, 0x16, 0x88, 0x25, 0x8b, 0x2c, 0xf8, 0x15, 0x2c, 0xf2, 0x07, + 0x92, 0x45, 0xb2, 0x42, 0x42, 0x59, 0x86, 0x0c, 0x4a, 0x76, 0x64, 0x62, 0x8b, 0xaf, 0x40, 0x88, + 0x47, 0x96, 0x09, 0x89, 0x89, 0x8d, 0xed, 0x71, 0xb7, 0xbb, 0xba, 0xba, 0x3e, 0xba, 0xef, 0x3d, + 0x59, 0xe4, 0x96, 0xd5, 0xd8, 0x26, 0x1a, 0x45, 0x29, 0xe9, 0xe8, 0x54, 0xd7, 0xbd, 0x75, 0xde, + 0x73, 0xde, 0xf3, 0x9e, 0x5b, 0xad, 0x44, 0x84, 0xff, 0xc7, 0xa5, 0x94, 0x3a, 0x01, 0x2c, 0x02, + 0xe7, 0x9d, 0x1f, 0x03, 0x96, 0x80, 0x3f, 0x03, 0x5f, 0xaa, 0xff, 0x15, 0x48, 0x29, 0xf5, 0xfd, + 0x91, 0xa0, 0x8b, 0xc0, 0xf7, 0x00, 0xa6, 0xa6, 0xa6, 0x76, 0x2f, 0x5d, 0xba, 0xf4, 0x75, 0x9e, + 0xe7, 0xd9, 0xbd, 0x7b, 0xf7, 0x3e, 0x4c, 0xd3, 0x74, 0x0e, 0xf8, 0xd5, 0xb7, 0x02, 0x52, 0x4a, + 0x69, 0x60, 0xfe, 0x40, 0xe0, 0xe9, 0x30, 0x0c, 0x69, 0xb5, 0x5a, 0xff, 0xba, 0x72, 0xe5, 0xca, + 0xeb, 0xf3, 0xe7, 0xcf, 0x4b, 0xb3, 0xd9, 0xfc, 0x4e, 0x10, 0x04, 0x1f, 0x02, 0x6c, 0x6c, 0x6c, + 0xac, 0xb6, 0xdb, 0xed, 0x67, 0xd7, 0xae, 0x5d, 0x6b, 0x02, 0x7f, 0xd2, 0xef, 0x08, 0x5c, 0x03, + 0x16, 0x46, 0xa8, 0x58, 0x50, 0x4a, 0xd5, 0xe6, 0xe6, 0xe6, 0xec, 0xe2, 0xe2, 0xe2, 0xfa, 0xe5, + 0xcb, 0x97, 0xb7, 0xe6, 0xe7, 0xe7, 0x7b, 0x93, 0x93, 0x93, 0x27, 0x81, 0xf7, 0x9d, 0xd1, 0xe9, + 0x74, 0x92, 0x3c, 0xcf, 0xbf, 0x99, 0x9e, 0x9e, 0x9e, 0x12, 0x11, 0x2b, 0x22, 0x16, 0x28, 0x01, + 0x03, 0xed, 0x02, 0x1f, 0x3f, 0xc0, 0xef, 0xa7, 0xc7, 0x8f, 0x1f, 0xd7, 0xad, 0x56, 0x2b, 0xbf, + 0x78, 0xf1, 0xe2, 0xe6, 0xb9, 0x73, 0xe7, 0xb6, 0x66, 0x66, 0x66, 0xa6, 0xb5, 0xd6, 0x35, 0xe0, + 0x24, 0x40, 0x96, 0x65, 0x66, 0x79, 0x79, 0xd9, 0x2c, 0x2d, 0x2d, 0xf1, 0xf8, 0xf1, 0x63, 0x1e, + 0x3d, 0x7a, 0x34, 0xdc, 0xdc, 0xdc, 0xd4, 0xb7, 0x6e, 0xdd, 0xfa, 0xfb, 0x8d, 0x1b, 0x37, 0xa6, + 0xe4, 0x3f, 0x54, 0x59, 0x20, 0x00, 0x06, 0x5a, 0x29, 0xf5, 0x23, 0xad, 0xf5, 0x97, 0xad, 0x56, + 0x8b, 0xb3, 0x67, 0xcf, 0xf6, 0x2f, 0x5c, 0xb8, 0xb0, 0x77, 0xfa, 0xf4, 0xe9, 0xde, 0xf8, 0xf8, + 0xf8, 0x84, 0xcb, 0xe6, 0xa4, 0x31, 0x86, 0xb5, 0xb5, 0x35, 0xfb, 0xf0, 0xe1, 0x43, 0x9e, 0x3c, + 0x79, 0xc2, 0xb3, 0x67, 0xcf, 0x7a, 0xaf, 0x5e, 0xbd, 0x5a, 0xd5, 0x5a, 0xb7, 0x83, 0x20, 0x10, + 0x6b, 0xed, 0x84, 0x31, 0xa6, 0x19, 0x86, 0xe1, 0x46, 0xb9, 0x5c, 0xf6, 0x00, 0x8c, 0x31, 0x16, + 0x90, 0x7d, 0x20, 0xa0, 0x3c, 0x33, 0x33, 0xc3, 0x9d, 0x3b, 0x77, 0x00, 0xaa, 0x22, 0x52, 0x7d, + 0xf3, 0xe6, 0x0d, 0x0f, 0x1e, 0x3c, 0xe0, 0xe9, 0xd3, 0xa7, 0xac, 0xac, 0xac, 0x6c, 0xad, 0xae, + 0xae, 0xbe, 0x14, 0x91, 0xa8, 0x56, 0xab, 0x95, 0xc3, 0x30, 0x9c, 0xd6, 0x5a, 0x7f, 0x74, 0xea, + 0xd4, 0xa9, 0x79, 0xad, 0x35, 0x83, 0xc1, 0x80, 0x9d, 0x9d, 0x1d, 0x7a, 0xbd, 0x1e, 0x22, 0xb2, + 0x51, 0x2a, 0x95, 0x14, 0x80, 0x88, 0x88, 0x52, 0xea, 0x2d, 0xea, 0xf6, 0xfb, 0x74, 0xff, 0xfe, + 0x7d, 0x6e, 0xdf, 0xbe, 0xbd, 0xa4, 0x94, 0xea, 0x55, 0xa7, 0xc7, 0xc7, 0xc3, 0x81, 0xff, 0x9e, + 0x52, 0xea, 0xbb, 0xcd, 0x66, 0x73, 0xda, 0xf7, 0x7d, 0x3c, 0xcf, 0x03, 0xd8, 0xf7, 0x69, 0x9a, + 0xd2, 0xed, 0x76, 0x49, 0xd3, 0x14, 0x6b, 0x2d, 0x22, 0xa2, 0xc2, 0x30, 0xf4, 0x1c, 0x50, 0xd1, + 0xa3, 0xe0, 0x10, 0xd0, 0xe6, 0xe6, 0x26, 0x69, 0x9a, 0xae, 0x54, 0x7f, 0xfc, 0xfe, 0x4f, 0x97, + 0x7f, 0x6e, 0x69, 0xfe, 0xae, 0xc4, 0xdc, 0xef, 0xcb, 0x94, 0x12, 0x0f, 0xa5, 0xd4, 0xbe, 0x58, + 0x44, 0x84, 0x2c, 0xcb, 0xe8, 0x74, 0x3a, 0xb4, 0xdb, 0x6d, 0x06, 0x83, 0xc1, 0xbe, 0x8e, 0x46, + 0x2b, 0x72, 0x7d, 0x0a, 0x80, 0x81, 0x37, 0x0a, 0xa4, 0x94, 0xc2, 0xf7, 0x7d, 0xed, 0x97, 0x35, + 0xa5, 0x58, 0xf1, 0xb7, 0xcf, 0x13, 0xee, 0xdd, 0xee, 0xf0, 0xe2, 0x8b, 0x84, 0xbc, 0x2e, 0xfb, + 0x20, 0x79, 0x9e, 0xd3, 0x6e, 0xb7, 0xd9, 0xd9, 0xd9, 0x21, 0xcb, 0x32, 0x8a, 0x11, 0x11, 0x11, + 0xc2, 0x30, 0xf4, 0x8b, 0x8a, 0xde, 0x49, 0x9d, 0x88, 0xe0, 0x79, 0x9e, 0x3e, 0xf6, 0xc8, 0xe7, + 0xea, 0xad, 0x3a, 0xeb, 0x3f, 0xcc, 0xf8, 0xfa, 0xb3, 0x84, 0x95, 0x9f, 0xf4, 0x59, 0xbd, 0xda, + 0x67, 0xf6, 0x0f, 0x15, 0x66, 0x7f, 0xab, 0xe9, 0x6f, 0xef, 0xb1, 0xb5, 0xb5, 0x45, 0x92, 0x24, + 0x8c, 0xce, 0xa1, 0x88, 0x78, 0xa3, 0xd4, 0x39, 0xa0, 0xa3, 0x2b, 0xf2, 0x3c, 0x4f, 0x2b, 0xa5, + 0x50, 0x16, 0xa6, 0x56, 0x03, 0xc6, 0x36, 0xbc, 0x62, 0x11, 0x3f, 0x16, 0xd2, 0x9d, 0x98, 0xed, + 0xed, 0x6d, 0xfa, 0xfd, 0x3e, 0xd6, 0xda, 0xb7, 0xe6, 0x4f, 0x44, 0x08, 0x82, 0xa0, 0x50, 0x9d, + 0xb8, 0x75, 0xef, 0x5d, 0x15, 0x79, 0x26, 0x84, 0xbf, 0x7e, 0xde, 0x67, 0xf5, 0x5a, 0x82, 0x09, + 0x84, 0x0f, 0xbe, 0x0a, 0xf9, 0xf8, 0x37, 0x15, 0xcc, 0x3f, 0xfb, 0xbc, 0x7e, 0xfd, 0x86, 0x28, + 0x8a, 0x30, 0xc6, 0x1c, 0x35, 0xeb, 0x5e, 0xa9, 0x54, 0x2a, 0x62, 0xd9, 0x91, 0x3d, 0xb9, 0x3e, + 0x50, 0x91, 0xf8, 0xbe, 0x1f, 0x7c, 0xf3, 0x89, 0x61, 0xe5, 0xb3, 0x94, 0xc6, 0x3f, 0x34, 0x9f, + 0xfc, 0x7a, 0x8c, 0xc9, 0x17, 0x1e, 0x2b, 0x17, 0x22, 0x3a, 0x1f, 0x47, 0xc4, 0x43, 0x8d, 0xd1, + 0x93, 0x78, 0xdb, 0x86, 0xca, 0x2f, 0x77, 0x0f, 0x56, 0xa4, 0x8a, 0x8a, 0x9c, 0x16, 0x0a, 0x05, + 0x0d, 0xb4, 0xe3, 0xb0, 0x90, 0xad, 0x05, 0xfc, 0x13, 0xcb, 0x01, 0x0b, 0xbf, 0x28, 0x71, 0xe2, + 0x61, 0x80, 0x18, 0x21, 0x4d, 0x53, 0x56, 0xbf, 0xc8, 0x19, 0x36, 0xca, 0x40, 0x19, 0x00, 0xfd, + 0x3c, 0x3d, 0x04, 0xe4, 0x54, 0xe7, 0x01, 0x58, 0x6b, 0x47, 0x2b, 0xda, 0xa7, 0x4e, 0x00, 0xe5, + 0x79, 0x9e, 0xf5, 0x7d, 0x5f, 0x2b, 0xa5, 0x78, 0x6f, 0x49, 0x33, 0x18, 0x0e, 0x48, 0xd3, 0x94, + 0xdd, 0xdd, 0x5d, 0x8e, 0xfd, 0xac, 0x4b, 0x9e, 0xe6, 0x90, 0x5b, 0xc8, 0x04, 0x95, 0xd8, 0x43, + 0xbc, 0x89, 0x88, 0xe7, 0xe4, 0x9d, 0xbb, 0x3e, 0xbd, 0x55, 0x91, 0x56, 0x4a, 0x19, 0xe7, 0xad, + 0xb5, 0xd6, 0xcb, 0xb2, 0x8c, 0x24, 0x49, 0xe8, 0x74, 0x3a, 0xec, 0xed, 0xed, 0x91, 0x24, 0x09, + 0xf6, 0xf5, 0x10, 0xff, 0xbf, 0x9f, 0xf4, 0x43, 0xc0, 0xd3, 0x5a, 0x7b, 0x22, 0x92, 0x1d, 0x09, + 0xe4, 0x36, 0x69, 0xc0, 0x46, 0x51, 0x64, 0xb3, 0x2c, 0x23, 0x8e, 0x63, 0xb2, 0x2c, 0xc3, 0x18, + 0x73, 0x48, 0x5d, 0xef, 0xb8, 0xb2, 0x02, 0x48, 0x29, 0x95, 0x15, 0xe2, 0x3a, 0x58, 0xd1, 0xd0, + 0x3d, 0xb0, 0xeb, 0xeb, 0xeb, 0x33, 0x95, 0x4a, 0xe5, 0xb9, 0x31, 0xc6, 0x58, 0x6b, 0x0d, 0x60, + 0x45, 0xc4, 0x88, 0x48, 0x71, 0x6f, 0x01, 0x63, 0xad, 0xb5, 0x8e, 0x09, 0x6b, 0xad, 0x35, 0x22, + 0x32, 0x04, 0xae, 0x06, 0x41, 0xd0, 0x03, 0x52, 0x80, 0xe1, 0x70, 0x78, 0xa8, 0x22, 0x03, 0x70, + 0xe6, 0xcc, 0x19, 0x6e, 0xde, 0xbc, 0x79, 0x2c, 0x8e, 0x63, 0x1b, 0x45, 0x91, 0xc4, 0x71, 0x6c, + 0xbb, 0xdd, 0xae, 0xed, 0xf5, 0x7a, 0x12, 0x45, 0x91, 0x8d, 0xa2, 0xc8, 0x76, 0xbb, 0x5d, 0x89, + 0xa2, 0xc8, 0x26, 0x49, 0x72, 0x14, 0x8f, 0x5b, 0xa5, 0x52, 0xa9, 0xe6, 0xaa, 0x3b, 0x92, 0x3a, + 0x0f, 0x60, 0x76, 0x76, 0xb6, 0x76, 0xfd, 0xfa, 0xf5, 0x6f, 0xfb, 0x35, 0x1f, 0x02, 0x91, 0xb3, + 0xae, 0x88, 0x44, 0x4a, 0xa9, 0xae, 0xfb, 0xa6, 0x6d, 0x39, 0xe5, 0xbd, 0x05, 0x54, 0x5a, 0x5b, + 0x5b, 0xab, 0x2f, 0x2c, 0x2c, 0x50, 0xad, 0x56, 0x19, 0x1b, 0x1b, 0xdb, 0xb7, 0x5a, 0xad, 0x26, + 0x8d, 0x46, 0x23, 0x6d, 0x34, 0x1a, 0xf9, 0xc4, 0xc4, 0x44, 0xde, 0x68, 0x34, 0xcc, 0xc4, 0xc4, + 0x84, 0xa9, 0xd7, 0xeb, 0x52, 0xaf, 0xd7, 0x55, 0xb5, 0x5a, 0xf5, 0xaa, 0xd5, 0x6a, 0xa5, 0x5c, + 0x2e, 0x8f, 0x87, 0x61, 0x18, 0x6a, 0xad, 0x43, 0xa5, 0x94, 0x17, 0xc7, 0xb1, 0xf7, 0xf2, 0xe5, + 0xcb, 0xbf, 0xdc, 0xbd, 0x7b, 0x77, 0xb2, 0x00, 0x52, 0xc0, 0x07, 0xee, 0x8f, 0xc5, 0x31, 0xa0, + 0x32, 0x62, 0x55, 0xe7, 0x6b, 0xee, 0xbe, 0x06, 0xd4, 0x9d, 0x8d, 0x1f, 0xf0, 0x63, 0x80, 0x02, + 0xa8, 0x54, 0x2a, 0x94, 0xcb, 0x65, 0xda, 0xed, 0x76, 0x21, 0x90, 0x3f, 0x02, 0xd7, 0x15, 0xf0, + 0x03, 0xe0, 0x53, 0xe0, 0xc4, 0x08, 0x25, 0x43, 0x60, 0xe0, 0x36, 0xa6, 0xce, 0x12, 0xf7, 0x7b, + 0xe0, 0x6c, 0x38, 0xe2, 0x8b, 0x53, 0xba, 0x02, 0x84, 0x2e, 0x31, 0x05, 0x7c, 0x05, 0x74, 0x44, + 0xc4, 0x16, 0xd2, 0x4e, 0xdc, 0x90, 0x55, 0xdc, 0xe8, 0x8f, 0xf6, 0x4e, 0x8d, 0xf4, 0xc5, 0x3a, + 0xe1, 0x0c, 0x0f, 0x00, 0x0d, 0xdd, 0xfb, 0x99, 0x8b, 0x95, 0x00, 0x1d, 0x60, 0x0a, 0x18, 0x28, + 0xa5, 0x62, 0x0d, 0x6c, 0xb8, 0x85, 0x17, 0x2e, 0xab, 0xe2, 0x58, 0x0a, 0x5c, 0x76, 0xc5, 0xb9, + 0x53, 0x64, 0x5b, 0x1a, 0x59, 0xd7, 0xee, 0x79, 0x91, 0x98, 0x72, 0x66, 0x80, 0x36, 0xf0, 0x1c, + 0x88, 0x81, 0xe4, 0xdf, 0xcc, 0xce, 0xc6, 0x31, 0x0e, 0xd1, 0x38, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, +}; + +const BITMAP_OPAQUE py_script_xpm[1] = {{ png, sizeof( png ), "py_script_xpm" }}; + +//EOF diff --git a/bitmaps_png/sources/add_dashed_line.svg b/bitmaps_png/sources/add_dashed_line.svg index 31022de172..7665c7ba71 100644 --- a/bitmaps_png/sources/add_dashed_line.svg +++ b/bitmaps_png/sources/add_dashed_line.svg @@ -34,15 +34,15 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1301" - inkscape:window-height="744" + inkscape:window-width="1600" + inkscape:window-height="849" id="namedview48" showgrid="true" inkscape:zoom="22.961538" - inkscape:cx="13" + inkscape:cx="4.3551087" inkscape:cy="13" - inkscape:window-x="65" - inkscape:window-y="24" + inkscape:window-x="0" + inkscape:window-y="29" inkscape:window-maximized="1" inkscape:current-layer="svg2" inkscape:snap-to-guides="false" @@ -60,26 +60,9 @@ - - + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> diff --git a/bitmaps_png/sources/annotate.svg b/bitmaps_png/sources/annotate.svg index 179b72eac3..e200d033c5 100644 --- a/bitmaps_png/sources/annotate.svg +++ b/bitmaps_png/sources/annotate.svg @@ -39,13 +39,13 @@ inkscape:window-height="849" id="namedview184" showgrid="true" - inkscape:zoom="22.961538" - inkscape:cx="6.1110434" - inkscape:cy="11.23117" + inkscape:zoom="45.923076" + inkscape:cx="16.222556" + inkscape:cy="5.7369038" inkscape:window-x="0" inkscape:window-y="29" inkscape:window-maximized="1" - inkscape:current-layer="svg2" + inkscape:current-layer="text3040" inkscape:snap-grids="false" inkscape:snap-to-guides="false"> - - - + + + + + + + + + + + id="path3001" + inkscape:connector-curvature="0" /> + id="path3003" + inkscape:connector-curvature="0" /> + id="path3005" + inkscape:connector-curvature="0" /> diff --git a/bitmaps_png/sources/datasheet.svg b/bitmaps_png/sources/datasheet.svg index 3429ecbebf..dc3513962e 100644 --- a/bitmaps_png/sources/datasheet.svg +++ b/bitmaps_png/sources/datasheet.svg @@ -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="48" - width="48" + height="26" + width="26" version="1.1" id="svg2" - inkscape:version="0.48.1 r9760" + inkscape:version="0.48.3.1 r9886" sodipodi:docname="datasheet.svg"> @@ -36,26 +36,36 @@ inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="1600" - inkscape:window-height="876" + inkscape:window-height="849" id="namedview31" - showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="-0.5832341" - inkscape:cy="26.726924" + showgrid="true" + inkscape:zoom="23.882667" + inkscape:cx="6.9462797" + inkscape:cy="13.806302" inkscape:window-x="0" - inkscape:window-y="24" + inkscape:window-y="29" inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> + inkscape:current-layer="svg2" + inkscape:snap-to-guides="false" + inkscape:snap-grids="false"> + + + y1="16.368999" + x1="23.983999"> + gradientTransform="matrix(0.19611083,0,0,0.17490217,-2.6221466,-1.3587275)" + x1="23.983999" + y1="16.368999" + x2="72.999001" + y2="73.399002" /> + style="fill:none;stroke:#000000;stroke-width:1.51282549;stroke-linejoin:round;stroke-opacity:0.0657895" /> + style="fill:#bab5ab;fill-opacity:0.44298245;fill-rule:evenodd;stroke:#000000;stroke-width:0.75641274;stroke-opacity:0.04385962" /> + style="fill:#ffffff;fill-opacity:0.27935001;fill-rule:evenodd" + inkscape:connector-curvature="0" /> - - - + style="fill:url(#linearGradient2824);fill-rule:evenodd" + inkscape:connector-curvature="0" /> + diff --git a/bitmaps_png/sources/hidden_pin.svg b/bitmaps_png/sources/hidden_pin.svg index 1c2cc01c84..0fc1dd5be6 100644 --- a/bitmaps_png/sources/hidden_pin.svg +++ b/bitmaps_png/sources/hidden_pin.svg @@ -38,55 +38,37 @@ inkscape:window-height="849" id="namedview48" showgrid="true" - inkscape:zoom="22.961538" - inkscape:cx="3.0154941" - inkscape:cy="13" + inkscape:zoom="32.472518" + inkscape:cx="13.960505" + inkscape:cy="19.966555" inkscape:window-x="0" inkscape:window-y="29" inkscape:window-maximized="1" inkscape:current-layer="svg2" inkscape:snap-to-guides="false" - inkscape:snap-grids="true" + inkscape:snap-grids="false" showguides="true" inkscape:guide-bbox="true"> + snapvisiblegridlinesonly="true" + dotted="false" /> - - - - - - - + id="defs4" /> + d="m 16.017072,8.8986023 0,-4.3193309" + style="fill:#b3b3b3;stroke:#999999;stroke-width:2.0134213;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> @@ -97,8 +79,8 @@ inkscape:connector-curvature="0" sodipodi:nodetypes="cccc" /> @@ -106,8 +88,8 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3762" - d="m 7.5,15.5 4.5,0" - style="fill:none;stroke:#800000;stroke-width:1.20000005000000010;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + d="m 7.4489163,15.478224 4.0795547,0" + style="fill:none;stroke:#800000;stroke-width:1.03539085;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + + diff --git a/bitmaps_png/sources/import_footprint_names.svg b/bitmaps_png/sources/import_footprint_names.svg index 8dadbcb049..42ed7fbba8 100644 --- a/bitmaps_png/sources/import_footprint_names.svg +++ b/bitmaps_png/sources/import_footprint_names.svg @@ -10,19 +10,18 @@ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" height="26" width="26" - version="1.0" + version="1.1" id="svg2" inkscape:version="0.48.3.1 r9886" sodipodi:docname="import_footprint_names.svg"> + id="metadata132"> image/svg+xml - @@ -37,1180 +36,376 @@ inkscape:pageshadow="2" inkscape:window-width="1600" inkscape:window-height="849" - id="namedview356" + id="namedview130" showgrid="true" - inkscape:zoom="22.961538" - inkscape:cx="1.3886714" - inkscape:cy="12.06054" + inkscape:snap-grids="false" + inkscape:snap-to-guides="false" + inkscape:zoom="23.730769" + inkscape:cx="8.9147325" + inkscape:cy="4.5721232" inkscape:window-x="0" inkscape:window-y="29" inkscape:window-maximized="1" - inkscape:current-layer="svg2" - inkscape:snap-grids="true" - inkscape:snap-to-guides="false"> + inkscape:current-layer="text126"> + snapvisiblegridlinesonly="true" /> - - - + id="stop7" /> + stop-color="#186389" + offset=".0151" + id="stop9" /> + stop-color="#558ca8" + offset=".0558" + id="stop11" /> + + + + + + offset=".27220" + id="stop23" /> + + + + + + offset=".23630" + id="stop32" /> + + + id="stop38" /> + id="stop40" /> - - - - - - - - - - - - - + x2="86.536003" + y1="102.34" + x1="94.344002"> + id="stop43" /> + id="stop45" /> - - - - - - - - - - + x2="86.586998" + y1="103" + x1="95"> + id="stop48" /> + id="stop50" /> - - - - - - + x2="87.292999" + y1="103" + x1="95"> + id="stop53" /> + id="stop55" /> - - + x2="88" + y1="104" + x1="96"> + id="stop58" /> + + + + + + + + id="stop74" /> + x2="2.7471001" + gradientTransform="matrix(-0.37672,0,0,-0.40275,28.619,48.2)" + y1="56.230999" + x1="64.129997"> + + + + + + + - - - - - - - - - + id="stop88" /> - - - - - - - - - + offset=".5" + id="stop90" /> - + id="stop92" /> - - - - - - - - - - + gradientTransform="matrix(-0.20731399,0,0,-0.21498904,15.790877,19.470215)" + x1="72" + y1="47.403999" + x2="4" + y2="47.403999" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + gradientTransform="matrix(-0.20731399,0,0,-0.21498904,15.790877,19.466478)" + x1="64.129997" + y1="56.230999" + x2="2.7471001" + y2="56.230999" /> + + + + + + + + + + + + + + + + + id="path122" + d="m 7.5697483,0.54744305 c 0.1956858,0.0166173 0.3793419,0.10471073 0.5182794,0.24858124 L 9.7465066,2.5159366 C 10.046411,2.8270635 10.071566,3.322726 9.8048123,3.6647868 L 7.5632766,6.5671254 h 7.3984104 c 0.45796,4.7e-5 0.829212,0.3850372 0.829267,0.8599562 V 10.00695 c -4.6e-5,0.474924 -0.371285,0.859903 -0.829267,0.859956 H 7.5632766 l 2.2415357,2.902339 c 0.2667537,0.342055 0.2415987,0.83775 -0.058306,1.14885 L 8.0880277,16.638007 C 7.9291688,16.802862 7.7102377,16.89711 7.4855448,16.893309 7.2608354,16.889519 7.0495977,16.78799 6.8959943,16.617856 L 0.26196868,9.3084959 c -0.30270528,-0.331641 -0.30270528,-0.8507748 0,-1.1824264 L 6.895444,0.81617534 C 7.0686826,0.6246149 7.3168353,0.52563721 7.5691924,0.54743771 z M 7.4984827,1.4073992 0.86445707,8.7172934 7.4984827,16.027188 9.1569616,14.307275 5.8399488,10.007494 H 14.96139 V 7.427626 H 5.8399488 L 9.1569616,3.1278453 7.4984827,1.407933 z" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + id="path124" + d="M 9.1568515,3.1310481 7.4982075,1.4111358 0.86418191,8.72103 7.4982075,16.03039 9.1568515,14.310478 5.8395636,10.010697 H 14.961005 V 7.4308289 H 5.8395636 L 9.1565764,3.1310481 z" /> + + + + + + + diff --git a/bitmaps_png/sources/py_script.svg b/bitmaps_png/sources/py_script.svg index d672b740d0..3a2d6575c5 100644 --- a/bitmaps_png/sources/py_script.svg +++ b/bitmaps_png/sources/py_script.svg @@ -22,7 +22,7 @@ image/svg+xml - + @@ -40,7 +40,7 @@ id="namedview27" showgrid="true" inkscape:zoom="16.236259" - inkscape:cx="11.015112" + inkscape:cx="-1.2106107" inkscape:cy="12.903668" inkscape:window-x="0" inkscape:window-y="29" @@ -324,33 +324,26 @@ d="M 2.7193662,6.605523 21.488121,2.5852623 20.951874,21.208529 2.7193662,20.262586 z" id="path4082" inkscape:connector-curvature="0" /> - - - - - - - + + + diff --git a/include/bitmaps.h b/include/bitmaps.h index eecf111f30..ae049aa719 100644 --- a/include/bitmaps.h +++ b/include/bitmaps.h @@ -410,6 +410,7 @@ EXTERN_BITMAP( post_module_xpm ) EXTERN_BITMAP( preference_xpm ) EXTERN_BITMAP( print_button_xpm ) EXTERN_BITMAP( ps_router_xpm ) +EXTERN_BITMAP( py_script_xpm ) EXTERN_BITMAP( ratsnest_xpm ) EXTERN_BITMAP( read_setup_xpm ) EXTERN_BITMAP( redo_xpm ) diff --git a/pcbnew/hotkeys.h b/pcbnew/hotkeys.h index 844aeca776..6424e713da 100644 --- a/pcbnew/hotkeys.h +++ b/pcbnew/hotkeys.h @@ -2,7 +2,7 @@ * @file pcbnew/hotkeys.h * Pcbnew hotkeys */ -#ifndef _PCBNEW_KOTKEYS_H +#ifndef _PCBNEW_HOTKEYS_H #define _PCBNEW_HOTKEYS_H #include From 3132c70e54a0c5a61110eab7662e288398145c15 Mon Sep 17 00:00:00 2001 From: Henner Zeller Date: Tue, 11 Feb 2014 21:54:30 +0000 Subject: [PATCH 18/18] * Apply Henner Zeller's patch to add connecting line from reference and labels to component position whilst moving to help identify which component the reference or label belongs too --- eeschema/sch_field.cpp | 10 ++++++++++ eeschema/schedit.cpp | 6 ++++++ eeschema/schframe.cpp | 4 ++++ include/base_struct.h | 4 +++- 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/eeschema/sch_field.cpp b/eeschema/sch_field.cpp index af21d0add0..71886a0205 100644 --- a/eeschema/sch_field.cpp +++ b/eeschema/sch_field.cpp @@ -199,6 +199,16 @@ void SCH_FIELD::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, LineWidth, m_Italic, m_Bold ); + // While moving: don't loose visual contact to which component this label belongs. + if ( IsWireImage() ) + { + const wxPoint origin = parentComponent->GetPosition(); + textpos = m_Pos - origin; + textpos = parentComponent->GetScreenCoord( textpos ); + textpos += parentComponent->GetPosition(); + GRLine( clipbox, DC, origin.x, origin.y, textpos.x, textpos.y, 2, DARKGRAY ); + } + /* Enable this to draw the bounding box around the text field to validate * the bounding box calculations. */ diff --git a/eeschema/schedit.cpp b/eeschema/schedit.cpp index 8f3d425bb1..3bfeba654b 100644 --- a/eeschema/schedit.cpp +++ b/eeschema/schedit.cpp @@ -653,6 +653,7 @@ static void moveItem( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPositio item->SetPosition( aPanel->GetParent()->GetCrossHairPosition() ); // Draw the item item at it's new position. + item->SetWireImage(); // While moving, the item may choose to render differently item->Draw( aPanel, aDC, wxPoint( 0, 0 ), g_XorMode ); } @@ -697,6 +698,11 @@ static void abortMoveItem( EDA_DRAW_PANEL* aPanel, wxDC* aDC ) // Never delete existing item, because it can be referenced by an undo/redo command // Just restore its data currentItem->SwapData( oldItem ); + + // Erase the wire representation before the 'normal' view is drawn. + if ( item->IsWireImage() ) + item->Draw( aPanel, aDC, wxPoint( 0, 0 ), g_XorMode ); + item->ClearFlags(); } diff --git a/eeschema/schframe.cpp b/eeschema/schframe.cpp index f69760a292..ffa575f7f8 100644 --- a/eeschema/schframe.cpp +++ b/eeschema/schframe.cpp @@ -973,6 +973,10 @@ void SCH_EDIT_FRAME::addCurrentItemToList( wxDC* aDC ) SaveUndoItemInUndoList( undoItem ); } + // Erase the wire representation before the 'normal' view is drawn. + if ( item->IsWireImage() ) + item->Draw( m_canvas, aDC, wxPoint( 0, 0 ), g_XorMode ); + item->ClearFlags(); screen->SetModify(); screen->SetCurItem( NULL ); diff --git a/include/base_struct.h b/include/base_struct.h index 90e3b4b67a..8679cfdd5b 100644 --- a/include/base_struct.h +++ b/include/base_struct.h @@ -298,7 +298,7 @@ public: #define IS_RESIZED (1 << 5) ///< Item being resized #define IS_DRAGGED (1 << 6) ///< Item being dragged #define IS_DELETED (1 << 7) -#define IS_WIRE_IMAGE (1 << 8) +#define IS_WIRE_IMAGE (1 << 8) ///< Item to be drawn as wireframe while editing #define STARTPOINT (1 << 9) #define ENDPOINT (1 << 10) #define SELECTED (1 << 11) @@ -389,11 +389,13 @@ public: inline bool IsModified() const { return m_Flags & IS_CHANGED; } inline bool IsMoving() const { return m_Flags & IS_MOVED; } inline bool IsDragging() const { return m_Flags & IS_DRAGGED; } + inline bool IsWireImage() const { return m_Flags & IS_WIRE_IMAGE; } inline bool IsSelected() const { return m_Flags & SELECTED; } inline bool IsResized() const { return m_Flags & IS_RESIZED; } inline bool IsHighlighted() const { return m_Flags & HIGHLIGHTED; } inline bool IsBrightened() const { return m_Flags & BRIGHTENED; } + inline void SetWireImage() { SetFlags( IS_WIRE_IMAGE ); } inline void SetSelected() { SetFlags( SELECTED ); ViewUpdate( COLOR ); } inline void SetHighlighted() { SetFlags( HIGHLIGHTED ); ViewUpdate( COLOR ); } inline void SetBrightened() { SetFlags( BRIGHTENED ); }