diff --git a/.bzrignore b/.bzrignore index 2e96f18ee3..61e1b52445 100644 --- a/.bzrignore +++ b/.bzrignore @@ -1,5 +1,6 @@ boost_root .downloads-by-cmake +Build common/netlist_keywords.* common/netlist_lexer.h common/pcb_plot_params_lexer.h 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/CMakeLists.txt b/CMakeLists.txt index e2dad3e535..3f0d4b109a 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. @@ -190,9 +197,11 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) set( TO_LINKER -Wl ) endif() - # Thou shalt not link vaporware and tell us it's a valid DSO: - set( CMAKE_SHARED_LINKER_FLAGS "${TO_LINKER},--no-undefined" ) - set( CMAKE_MODULE_LINKER_FLAGS "${TO_LINKER},--no-undefined" ) + # Thou shalt not link vaporware and tell us it's a valid DSO (apple ld doesn't support it) + if( NOT APPLE ) + set( CMAKE_SHARED_LINKER_FLAGS "${TO_LINKER},--no-undefined" ) + set( CMAKE_MODULE_LINKER_FLAGS "${TO_LINKER},--no-undefined" ) + endif() set( CMAKE_EXE_LINKER_FLAGS_RELEASE "-s" ) endif() @@ -341,8 +350,19 @@ add_definitions(-DWX_COMPATIBILITY) find_package( OpenGL QUIET ) check_find_package_result( OPENGL_FOUND "OpenGL" ) +# Handle target used to specify if a target needs wx-widgets or other libraries +# Always defined, empty if no libraries are to be build +add_custom_target( lib-dependencies ) + if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC ) + # This should be build in all cases, if swig exec is not avaiable + # will be impossible also enable SCRIPTING being for PCBNEW required immediatly + + include( download_pcre ) + include( download_swig ) + + #set(CMAKE_FIND_LIBRARY_SUFFIXES ".a;.so;.dylib;.dll") if( KICAD_BUILD_STATIC AND KICAD_BUILD_DYNAMIC ) @@ -351,26 +371,49 @@ if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC ) if( KICAD_BUILD_STATIC ) message(STATUS "KICAD_BUILD_STATIC set") + if( KICAD_SCRIPTING OR KICAD_SCRIPTING_WXPYTHON OR KICAD_SCRIPTING_MODULES ) + message(FATAL_ERROR "KICAD_SCRIPTING* is not supported with KICAD_BUILD_STATIC, please select KICAD_BUILD_DYNAMIC" ) + endif() endif() if( KICAD_BUILD_DYNAMIC ) message(STATUS "KICAD_BUILD_DYNAMIC set") - # TODO - Library packaging/relocation endif() - add_custom_target( lib-dependencies - DEPENDS boost cairo glew libpng pixman pkgconfig - ) - include( download_libpng ) + if( KICAD_SCRIPTING OR KICAD_SCRIPTING_WXPYTHON OR KICAD_SCRIPTING_MODULES ) + + message(STATUS "Scripting ENABLED") + include( download_wxpython ) + + 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 swig") + message( FATAL_ERROR "Missing SWIG!") + endif() + message(STATUS "SWIG_EXECUTABLE: ${SWIG_EXECUTABLE}") + + 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 ) + add_dependencies( lib-dependencies swig ) - if( KICAD_SCRIPTING_WXPYTHON ) - message( FATAL_ERROR "KICAD_BUILD_* and SCRIPTING Not Implemented Yet!" ) else() include( download_wxwidgets ) add_dependencies( lib-dependencies libwx ) endif() + include( download_libpng ) + include( download_pkgconfig ) set( PKG_CONFIG_EXECUTABLE "${PKGCONFIG_ROOT}/bin/pkg-config" ) include( download_glew ) @@ -382,6 +425,12 @@ if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC ) set( CAIRO_INCLUDE_DIR "${CAIRO_ROOT}/include/cairo" ) set( CAIRO_LIBRARY "${CAIRO_ROOT}/lib/libcairo.a" ) + add_dependencies( lib-dependencies boost ) + add_dependencies( lib-dependencies cairo ) + add_dependencies( lib-dependencies libpng ) + add_dependencies( lib-dependencies pixman ) + add_dependencies( lib-dependencies pkgconfig ) + if( KICAD_BUILD_DYNAMIC AND APPLE ) add_custom_target( osx_fix_bundles ALL DEPENDS cvpcb eeschema gerbview kicad pcbnew bitmap2component pcb_calculator pl_editor) add_custom_command(TARGET osx_fix_bundles POST_BUILD COMMAND scripts/osx_fixbundle.sh COMMENT "Migrating dylibs to bundles") @@ -428,7 +477,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 ) @@ -477,10 +526,25 @@ set( INC_AFTER # Find Python and other scripting resources if( KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES ) - set( PythonInterp_FIND_VERSION ) - find_package( PythonInterp ) - check_find_package_result( PYTHONINTERP_FOUND "Python Interpreter" ) + if( APPLE ) + 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() + + # force a python version < 3.0 + set( PythonInterp_FIND_VERSION 2.6) + set( PythonLibs_FIND_VERSION 2.6 ) + + find_package( PythonInterp ) + + check_find_package_result( PYTHONINTERP_FOUND "Python Interpreter" ) + + if( NOT PYTHON_VERSION_MAJOR EQUAL 2 ) + message( FATAL_ERROR "Python 2.x is required." ) + endif() # Get the correct Python site package install path from the Python interpreter found by # FindPythonInterp unless the user specifically defined a custom path. if( NOT PYTHON_SITE_PACKAGE_PATH ) @@ -498,7 +562,7 @@ if( KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES ) mark_as_advanced( PYTHON_DEST ) message( STATUS "Python module install path: ${PYTHON_DEST}" ) - find_package( PythonLibs ) + find_package( PythonLibs 2.6 ) #message( STATUS "PYTHON_INCLUDE_DIRS:${PYTHON_INCLUDE_DIRS}" ) @@ -573,17 +637,13 @@ if ( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC ) add_dependencies( pcbnew lib-dependencies ) add_dependencies( eeschema lib-dependencies ) add_dependencies( cvpcb lib-dependencies ) -add_dependencies( gal lib-dependencies ) add_dependencies( common lib-dependencies ) +add_dependencies( gal lib-dependencies ) add_dependencies( pcbcommon lib-dependencies ) add_dependencies( 3d-viewer lib-dependencies ) add_dependencies( pcad2kicadpcb lib-dependencies ) -add_dependencies( polygon lib-dependencies ) add_dependencies( pl_editor lib-dependencies ) add_dependencies( pnsrouter lib-dependencies ) - if ( BUILD_GITHUB_PLUGIN ) - add_dependencies( github_plugin lib-dependencies ) - endif() endif() if ( KICAD_BUILD_DYNAMIC ) diff --git a/CMakeModules/download_pcre.cmake b/CMakeModules/download_pcre.cmake new file mode 100644 index 0000000000..09f8900878 --- /dev/null +++ b/CMakeModules/download_pcre.cmake @@ -0,0 +1,67 @@ +# 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 + +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) + +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..e72918e89f --- /dev/null +++ b/CMakeModules/download_swig.cmake @@ -0,0 +1,79 @@ +# 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" ) + endif( CMAKE_OSX_ARCHITECTURES ) + + set( SWIG_PYTHON "--with-python=/usr/bin/python2.6" ) + set( SWIG_OPTS --disable-dependency-tracking ) +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} ${SWIG_OPTS} + + #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..4e1a71f688 --- /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/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 + + CONFIGURE_COMMAND ${LIBWXPYTHON_EXEC} wxPython/build-wxpython.py --prefix=${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/HOW_TO_CONTRIBUTE.txt b/Documentation/HOW_TO_CONTRIBUTE.txt similarity index 56% rename from HOW_TO_CONTRIBUTE.txt rename to Documentation/HOW_TO_CONTRIBUTE.txt index 510c49e6c1..d042329528 100644 --- a/HOW_TO_CONTRIBUTE.txt +++ b/Documentation/HOW_TO_CONTRIBUTE.txt @@ -11,32 +11,40 @@ Contribute to KiCad (under Linux) 2) initialize Bazaar: bzr whoami "John Doe " -3) get LATEST KiCad source tree and name it, for instance, "kicad_john": +3) get latest KiCad source tree: cd ~/ - bzr branch lp:kicad kicad_john + bzr branch lp:kicad kicad.bzr -4) Read coding_style_policy.pdf, in /Documentation, - and other docs. + this should leave you with the folder kicad.bzr -5) Modify/add source code. - cd kicad_john +4) Read coding_style_policy.pdf, in kicad.bzr/Documentation, + and other docs. + +5) create a local (branch) copy of the KiCad project + bzr branch ./kicad.bzr ./kicad.my_contrib + +6) Modify/add source code in + cd kicad.my_contrib gedit ....... + if you need to create and add the file foo.cpp do so and: + bzr add foo.cpp + if you need to delete files: + bzr rm foo.cpp -6) Compile: - cd kicad_john +7) Compile: + cd kicad.my_contrib mkdir build; cd build cmake ../ -DCMAKE_BUILD_TYPE=Debug - to build a debug version - or + to build a debug version + or cmake ../ -DCMAKE_BUILD_TYPE=Release - to build a release version - make + to build a release version + make -j8 -7) Repeat step 5 and 6 until satisfied. +8) Repeat step 6 and 7 until satisfied. -8) Create a patch: - in kicad_john: - if some files are added: bzr add [FILE...] +9) Create a patch file: + cd kicad.my_contrib bzr diff > my_changes.patch 9) Send the patch file "my_changes.patch" to the KiCad developers mailing list. diff --git a/Documentation/compiling/COMPILING.txt b/Documentation/compiling/COMPILING.txt index f53e7b10dc..8457885384 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,50 @@ 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) + +A mirror of github is available, using bzr: +(schematic libs, 3D shapes ... all but new footprints libraries) +bzr checkout lp:~kicad-product-committers/kicad/library + +Old legacy libraries: +bzr checkout lp:~dickelbeck/kicad/library-read-only + +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 +168,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 +201,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/Documentation/compiling/mac-osx.txt b/Documentation/compiling/mac-osx.txt index 01477eede3..5e1e0a1934 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,51 @@ 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 + cmake -DKICAD_BUILD_DYNAMIC=ON . + make -You need the architectures what you are compiling for ! +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 -If you have problems that the 64bits library is not build you should add in -the configure file: + cmake -DKICAD_BUILD_DYNAMIC=ON . + make swig -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" + After successfully building you can set your KICAD_SCRIPTING* options (for example): -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/ + cmake -DKICAD_SCRIPTING=ON -DKICAD_SCRIPTING_WXPYTHON=ON -DKICAD_SCRIPTING_MODULES=ON . + make - Should be subsituded with the revision from SVN + 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. -Then you should a message like this: +Building Kicad for other processors or Universal binaries +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Configured wxWidgets 2.9.2 for `i686-apple-darwin10.4.0' + I wish remember you should set the processor like - 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 + cmake -DCMAKE_OSX_ARCHITECTURES="x86_64" + for other platforms -If you don't need the debugging symbols then you can remove the --enable-debug parameter. + cmake -DCMAKE_OSX_ARCHITECTURES="x86_64 -arch i386" + cmake -DCMAKE_OSX_ARCHITECTURES="x86_64 -arch i386 -arch ppc" -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/notes_about_pcbnew_new_file_format.odt b/Documentation/notes_about_pcbnew_new_file_format.odt similarity index 100% rename from notes_about_pcbnew_new_file_format.odt rename to Documentation/notes_about_pcbnew_new_file_format.odt diff --git a/bitmap2component/CMakeLists.txt b/bitmap2component/CMakeLists.txt index 2c5c85eed9..9488b896be 100644 --- a/bitmap2component/CMakeLists.txt +++ b/bitmap2component/CMakeLists.txt @@ -2,7 +2,6 @@ include_directories(BEFORE ${INC_BEFORE}) include_directories( ../potrace - ../polygon/kbool/include ../common ${INC_AFTER} ) diff --git a/bitmaps_png/CMakeLists.txt b/bitmaps_png/CMakeLists.txt index 61e46e6d9a..944a5450fb 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 @@ -447,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/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/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/find.cpp b/bitmaps_png/cpp_26/find.cpp index d223aedacc..e57d2a01de 100644 --- a/bitmaps_png/cpp_26/find.cpp +++ b/bitmaps_png/cpp_26/find.cpp @@ -8,84 +8,96 @@ 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, 0xbb, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x96, 0x4b, 0x6c, 0x1b, - 0x55, 0x14, 0x86, 0xbf, 0x7b, 0x67, 0xfc, 0x4a, 0x1c, 0xdb, 0x72, 0xd3, 0x34, 0x4a, 0xe3, 0x28, - 0xa5, 0xb1, 0xe2, 0x3a, 0x21, 0x88, 0x22, 0x0a, 0x34, 0x52, 0xda, 0xaa, 0xa2, 0x5d, 0x20, 0xd2, - 0xec, 0x40, 0xa2, 0x11, 0x0b, 0x58, 0x50, 0x56, 0xac, 0x91, 0x8a, 0x58, 0x21, 0x58, 0x74, 0xd3, - 0x15, 0xad, 0x94, 0x45, 0x57, 0x45, 0x42, 0x42, 0x65, 0x55, 0xb1, 0xa0, 0x40, 0xc5, 0x06, 0xa5, - 0x4f, 0x35, 0xcd, 0x4b, 0x4e, 0x1f, 0x4e, 0x5b, 0x8b, 0x46, 0x69, 0x1c, 0xb7, 0x71, 0x33, 0x9e, - 0xc7, 0x61, 0x41, 0xc6, 0xb2, 0x63, 0x07, 0xe8, 0x86, 0x2b, 0xfd, 0x9a, 0x3b, 0x9a, 0x3b, 0xf7, - 0x3f, 0xff, 0x39, 0x67, 0xfe, 0x3b, 0x4a, 0x44, 0xf8, 0x3f, 0x86, 0x09, 0x70, 0xf6, 0xec, 0xd9, - 0xf3, 0x4a, 0xa9, 0xf7, 0x4d, 0xd3, 0xc4, 0x30, 0x0c, 0x44, 0x04, 0xc7, 0x71, 0x70, 0x5d, 0x17, - 0xc7, 0x71, 0xaa, 0x78, 0xd1, 0x7b, 0xad, 0xf5, 0xb7, 0x13, 0x13, 0x13, 0x27, 0x00, 0x38, 0x7d, - 0xfa, 0x74, 0xec, 0xcc, 0x99, 0x33, 0x15, 0xdb, 0xb6, 0xc5, 0x75, 0xdd, 0xa6, 0x70, 0x1c, 0xa7, - 0x0a, 0xdb, 0xb6, 0xeb, 0x50, 0xa9, 0x54, 0xaa, 0xb0, 0x2c, 0xab, 0x8a, 0x52, 0xa9, 0x24, 0xe3, - 0xe3, 0xe3, 0x9e, 0x88, 0x20, 0x22, 0x98, 0xae, 0xeb, 0x6a, 0xad, 0xb5, 0xa7, 0x94, 0x22, 0x9f, - 0xcf, 0xa3, 0x94, 0x02, 0x40, 0x29, 0x55, 0x37, 0x6f, 0x76, 0xdd, 0x6a, 0x68, 0xad, 0x49, 0x24, - 0x12, 0x88, 0x88, 0xaa, 0x4b, 0x9d, 0xe7, 0x79, 0x4d, 0x37, 0x6f, 0x36, 0xff, 0x2f, 0x44, 0xcd, - 0x9e, 0x9b, 0x00, 0xae, 0xeb, 0x02, 0x50, 0x2a, 0x95, 0x58, 0x59, 0x59, 0xa1, 0xa7, 0xa7, 0x07, - 0xad, 0x35, 0x0b, 0x0b, 0x0b, 0x6c, 0x6e, 0x96, 0x7f, 0x22, 0x11, 0x11, 0xfa, 0xfb, 0xfb, 0xab, - 0x6b, 0x6a, 0xdf, 0x6d, 0x50, 0xd4, 0xd7, 0xd7, 0x47, 0x28, 0x14, 0xa2, 0x5c, 0x2e, 0x93, 0x4e, - 0xa7, 0x5f, 0x28, 0x7d, 0x22, 0x82, 0xd6, 0x1a, 0xad, 0x75, 0x23, 0xd1, 0xea, 0xea, 0x2a, 0x89, - 0x44, 0x02, 0x80, 0x44, 0x22, 0x81, 0x52, 0x0a, 0xcb, 0xb2, 0x50, 0x4a, 0x91, 0xcb, 0xe5, 0xea, - 0x16, 0x6f, 0xde, 0x5c, 0x44, 0x18, 0x18, 0x18, 0xd8, 0x32, 0x75, 0x0d, 0x8a, 0x5c, 0xd7, 0x45, - 0x44, 0x50, 0x4a, 0x55, 0x1f, 0x2a, 0xa5, 0x48, 0xa7, 0xd3, 0xd5, 0xe8, 0x9a, 0x35, 0x87, 0xaf, - 0x60, 0x33, 0xb9, 0xbf, 0xb6, 0x81, 0xc8, 0x71, 0x9c, 0xa6, 0x11, 0xfd, 0x9b, 0xa2, 0x66, 0x0a, - 0xb3, 0xd9, 0x6c, 0xf5, 0xde, 0x2f, 0x49, 0x43, 0x33, 0xf8, 0x91, 0xf8, 0x1b, 0xf8, 0x85, 0xad, - 0x55, 0x92, 0xcb, 0xe5, 0xb0, 0x6d, 0x9b, 0xb6, 0xb6, 0x36, 0x4c, 0xd3, 0xa4, 0x58, 0x2c, 0xb2, - 0xbe, 0xbe, 0x4e, 0x36, 0x9b, 0x25, 0x14, 0x0a, 0xd5, 0x29, 0x6c, 0x20, 0xb2, 0x6d, 0xbb, 0x4e, - 0xb2, 0xbf, 0xf1, 0xfc, 0xfc, 0x7c, 0x55, 0x91, 0x65, 0x59, 0x88, 0x08, 0x83, 0x43, 0xaf, 0xf0, - 0xd3, 0xd5, 0x87, 0x4c, 0xdd, 0x5c, 0xc2, 0x71, 0x3c, 0xd2, 0xdd, 0x09, 0xde, 0x79, 0xa3, 0x8f, - 0xc5, 0xc5, 0xfb, 0x14, 0x0a, 0x05, 0x46, 0x46, 0x46, 0x30, 0x0c, 0xa3, 0x91, 0xa8, 0x58, 0x2c, - 0x12, 0x8b, 0xc5, 0xea, 0xd2, 0xb1, 0x59, 0x91, 0xe7, 0x79, 0xcc, 0xcc, 0xcc, 0xd0, 0xb2, 0xbd, - 0x97, 0x93, 0xe7, 0xae, 0x71, 0x6c, 0x64, 0x0f, 0x1f, 0x0e, 0xec, 0xc2, 0xb2, 0x3d, 0xee, 0x14, - 0x56, 0xf9, 0xea, 0xbb, 0x9b, 0x1c, 0x7d, 0xb5, 0x93, 0x3d, 0xe9, 0x34, 0x4b, 0x4b, 0x4b, 0x74, - 0x76, 0x76, 0x36, 0x57, 0xe4, 0x38, 0x4e, 0xc3, 0x47, 0x09, 0x30, 0x37, 0x37, 0x87, 0x88, 0xf0, - 0xf8, 0xf1, 0x63, 0x5e, 0x7f, 0x73, 0x98, 0x2f, 0xce, 0x5d, 0xe5, 0xb3, 0xf7, 0xf6, 0xd1, 0xb5, - 0x2d, 0x8a, 0xe3, 0x7a, 0x94, 0x2d, 0x9b, 0x4c, 0x77, 0x8c, 0x64, 0x6c, 0x88, 0xef, 0x7f, 0xbe, - 0x4d, 0x3a, 0xd5, 0xcf, 0xfd, 0x85, 0x5b, 0x74, 0x74, 0x74, 0x6c, 0x5d, 0xa3, 0x66, 0xa9, 0xcb, - 0x64, 0x32, 0x68, 0xad, 0xb1, 0x2c, 0x8b, 0x1f, 0x7e, 0xbf, 0xcb, 0xdb, 0x6f, 0xf5, 0x13, 0x8f, - 0x46, 0x70, 0x3c, 0x01, 0xa5, 0x09, 0x06, 0x02, 0x78, 0x68, 0x44, 0x2a, 0xbc, 0x36, 0xd8, 0xc3, - 0xc4, 0xc5, 0x69, 0x4e, 0x1c, 0xdd, 0xc5, 0xf2, 0xf2, 0x32, 0x91, 0x48, 0xa4, 0xb9, 0xa2, 0x66, - 0x63, 0x7e, 0x7e, 0x1e, 0xdb, 0xb6, 0x31, 0x4d, 0x93, 0x85, 0x47, 0x25, 0x76, 0xf7, 0xec, 0xe0, - 0xe9, 0xb3, 0x32, 0xeb, 0xa6, 0x42, 0x21, 0xb8, 0xae, 0xc7, 0xda, 0xba, 0xcd, 0x83, 0x47, 0x4b, - 0xd8, 0x15, 0xe1, 0xb9, 0xe5, 0x10, 0x0e, 0x87, 0x29, 0x14, 0x0a, 0x74, 0x77, 0x77, 0xd7, 0xfb, - 0x5f, 0xb1, 0x58, 0xac, 0x76, 0xdd, 0xe6, 0x3a, 0x65, 0x32, 0x19, 0x32, 0x99, 0x0c, 0x86, 0x61, - 0x60, 0x1a, 0x0a, 0xcc, 0x20, 0xda, 0x0c, 0x12, 0x0c, 0x86, 0x88, 0x44, 0x22, 0x44, 0x5a, 0x5a, - 0xc0, 0x0c, 0x93, 0xda, 0xd9, 0x49, 0x57, 0xe7, 0x76, 0x42, 0xc1, 0x00, 0x96, 0x65, 0xe1, 0x79, - 0x5e, 0x43, 0x19, 0xaa, 0x8a, 0x6a, 0x53, 0xe7, 0x8f, 0xd9, 0xd9, 0x59, 0x3c, 0xcf, 0x63, 0x6d, - 0x6d, 0x8d, 0xc1, 0xde, 0x76, 0xae, 0xdc, 0xbe, 0xc7, 0xb3, 0xd5, 0x36, 0xa2, 0x21, 0x8d, 0x16, - 0x07, 0x25, 0x36, 0xcf, 0x6d, 0xc5, 0xba, 0xa3, 0x58, 0x29, 0x7b, 0x84, 0x03, 0x42, 0xb9, 0x5c, - 0x26, 0x99, 0x4c, 0x36, 0x3a, 0xba, 0xdf, 0xde, 0x00, 0x4f, 0x9e, 0x3c, 0x61, 0x7a, 0x7a, 0x1a, - 0xcb, 0xb2, 0xaa, 0x35, 0x1a, 0x1c, 0x1c, 0x44, 0x6b, 0xcd, 0xb1, 0xfd, 0xbb, 0x78, 0xf8, 0xe7, - 0x53, 0x08, 0x44, 0x69, 0x8d, 0x6f, 0x63, 0xfb, 0x8e, 0x9d, 0x74, 0xa5, 0x76, 0xd3, 0xd3, 0xd3, - 0x4b, 0x47, 0x67, 0x17, 0x33, 0xf9, 0xa7, 0x7c, 0x3a, 0x3a, 0xc4, 0xf5, 0xeb, 0xd7, 0x49, 0xa5, - 0x52, 0xcd, 0xdd, 0xdb, 0xaf, 0x91, 0x61, 0x18, 0xa4, 0xd3, 0x69, 0x5a, 0x5b, 0x5b, 0xa9, 0x54, - 0x2a, 0xcc, 0xce, 0xce, 0x22, 0x22, 0x84, 0xc3, 0x61, 0x2e, 0x5f, 0xfe, 0x8d, 0x93, 0xe3, 0x07, - 0xf8, 0xe6, 0xfc, 0x24, 0xd1, 0x48, 0x80, 0x9d, 0xed, 0x61, 0xa2, 0xad, 0x11, 0xd6, 0x2a, 0x26, - 0x53, 0xb9, 0x02, 0x9f, 0xbc, 0x3b, 0x40, 0x40, 0x39, 0x58, 0x96, 0xc5, 0xe4, 0xe4, 0x24, 0xc3, - 0xc3, 0xc3, 0xf5, 0x44, 0xc5, 0x62, 0x91, 0x78, 0x3c, 0x8e, 0x88, 0x10, 0x8f, 0xc7, 0xd1, 0x5a, - 0x57, 0x15, 0xf6, 0xf7, 0xf7, 0x63, 0x18, 0x06, 0x4a, 0x29, 0x8a, 0xc5, 0x22, 0xd7, 0xfe, 0xb8, - 0xcc, 0x97, 0xe3, 0xc3, 0xdc, 0x5b, 0x5a, 0xe7, 0xd6, 0x9d, 0x65, 0xca, 0x65, 0x9b, 0x97, 0x5f, - 0x4a, 0xf0, 0xc1, 0x81, 0x7d, 0x5c, 0xbd, 0x32, 0x89, 0x93, 0x48, 0x10, 0x0a, 0x85, 0xc8, 0xe7, - 0xf3, 0x2c, 0x2e, 0x2e, 0x36, 0xa6, 0xae, 0xb6, 0xeb, 0x6a, 0xbd, 0xad, 0xd6, 0x50, 0x93, 0xc9, - 0x24, 0x87, 0x0f, 0x1f, 0x26, 0x97, 0xcb, 0xf1, 0x60, 0xee, 0x0a, 0xa9, 0xd0, 0x12, 0x43, 0x1d, - 0xcf, 0x59, 0xbe, 0x7b, 0x8d, 0x5f, 0x7f, 0xb9, 0x44, 0xa9, 0x54, 0x22, 0x9f, 0xcf, 0xfb, 0x27, - 0x2b, 0x22, 0x42, 0x7b, 0x7b, 0x3b, 0xa3, 0xa3, 0xa3, 0x2d, 0x00, 0x66, 0x20, 0x10, 0x10, 0xcb, - 0xb2, 0xb4, 0xaf, 0xa8, 0xd6, 0xa7, 0x6a, 0x7d, 0xcb, 0x0f, 0x60, 0xef, 0xde, 0xbd, 0x78, 0x9e, - 0x87, 0xeb, 0xba, 0xd8, 0xb6, 0x5d, 0xb5, 0x1b, 0xa5, 0x14, 0x97, 0x2e, 0xfd, 0x4d, 0xd8, 0xd6, - 0xd6, 0x46, 0xa5, 0x52, 0xe1, 0xe0, 0xc1, 0x83, 0x4c, 0x4d, 0x4d, 0xcd, 0x1f, 0x39, 0x72, 0x64, - 0x9f, 0x02, 0x92, 0x63, 0x63, 0x63, 0x3f, 0x2a, 0xa5, 0xf6, 0xfb, 0x2f, 0xd5, 0xda, 0xbd, 0x3f, - 0xf7, 0x3c, 0xaf, 0xee, 0xea, 0xc3, 0x3f, 0x0e, 0x6a, 0x8f, 0x86, 0x43, 0x87, 0x0e, 0xe9, 0xde, - 0xde, 0x5e, 0x5a, 0x5a, 0x5a, 0x48, 0xa5, 0x52, 0x9c, 0x3a, 0x75, 0xea, 0xa2, 0x09, 0x78, 0x17, - 0x2e, 0x5c, 0xf8, 0x38, 0x16, 0x8b, 0xf5, 0x2a, 0xa5, 0xa2, 0x7e, 0x83, 0x00, 0x0a, 0x10, 0x40, - 0x89, 0x88, 0x29, 0x22, 0x06, 0x60, 0x88, 0x88, 0x21, 0x22, 0xda, 0x9f, 0x6f, 0xa4, 0x5f, 0x01, - 0x9e, 0x52, 0xca, 0x03, 0xec, 0x1b, 0x37, 0x6e, 0xc4, 0x8e, 0x1f, 0x3f, 0xfe, 0xf9, 0xd8, 0xd8, - 0x58, 0x3c, 0x1a, 0x8d, 0x12, 0x0c, 0x06, 0x5d, 0xb5, 0x11, 0x8d, 0x06, 0xc2, 0x1b, 0x08, 0x6e, - 0xf5, 0x73, 0xb3, 0x11, 0x84, 0xb1, 0x01, 0x5d, 0x43, 0xc2, 0x46, 0x50, 0x02, 0xb8, 0xc0, 0x7a, - 0x2a, 0x95, 0xf2, 0xb2, 0xd9, 0xec, 0x47, 0xf1, 0x78, 0x3c, 0xb9, 0xbc, 0xbc, 0xfc, 0xf5, 0x5f, - 0x8c, 0x86, 0xc8, 0x61, 0x09, 0x89, 0x45, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, - 0xae, 0x42, 0x60, 0x82, + 0xce, 0x00, 0x00, 0x05, 0x7d, 0x49, 0x44, 0x41, 0x54, 0x48, 0x4b, 0xbd, 0x95, 0xd9, 0x4f, 0x54, + 0x67, 0x18, 0xc6, 0x69, 0xaf, 0x9a, 0x36, 0x05, 0xda, 0x9b, 0x36, 0xbd, 0xed, 0x45, 0xfb, 0x87, + 0x34, 0xe9, 0x0d, 0x91, 0x75, 0x2c, 0xbb, 0x06, 0x4c, 0x34, 0x46, 0x22, 0x2d, 0x09, 0x04, 0x90, + 0xcd, 0x85, 0x04, 0x8b, 0x28, 0x16, 0x94, 0x4d, 0x36, 0x45, 0x10, 0x18, 0x86, 0x75, 0x70, 0x1a, + 0xa2, 0xec, 0xc8, 0x80, 0xc8, 0x3e, 0x08, 0x38, 0x1b, 0x30, 0x2c, 0xb3, 0x00, 0x0e, 0xe8, 0x08, + 0xd2, 0xa7, 0xdf, 0xfb, 0xea, 0x39, 0x72, 0xac, 0x4d, 0xd3, 0x34, 0xe9, 0x24, 0xcf, 0xcc, 0x9c, + 0x93, 0x73, 0xbe, 0xdf, 0xf7, 0xbc, 0xdb, 0xe7, 0x05, 0xc0, 0xeb, 0xff, 0x10, 0x7f, 0x15, 0x17, + 0x17, 0xd7, 0x96, 0x94, 0x94, 0xa0, 0xbc, 0xbc, 0x1c, 0x55, 0x55, 0x55, 0xa8, 0xac, 0xac, 0x44, + 0x59, 0x59, 0x19, 0xc4, 0x7d, 0x14, 0x16, 0x16, 0x22, 0x3f, 0x3f, 0x1f, 0x57, 0xae, 0x5c, 0xc1, + 0xe5, 0xcb, 0x97, 0x91, 0x9d, 0x9d, 0x8d, 0xf3, 0xe7, 0xcf, 0x23, 0x3d, 0x3d, 0x1d, 0xa9, 0xa9, + 0xa9, 0x48, 0x4a, 0x4a, 0x42, 0x42, 0x42, 0x02, 0xce, 0x9e, 0x3d, 0x8b, 0x33, 0x67, 0xce, 0xe0, + 0xd4, 0xa9, 0x53, 0x38, 0x71, 0xe2, 0x04, 0x8e, 0x1f, 0x3f, 0x8e, 0x98, 0x98, 0x98, 0x9b, 0x32, + 0xe8, 0xfa, 0xf5, 0xeb, 0xde, 0x62, 0xc1, 0xbd, 0xfd, 0xfd, 0x7d, 0x1c, 0x1c, 0x1c, 0x7c, 0x50, + 0xaf, 0x5f, 0xbf, 0x96, 0x45, 0xcf, 0x1d, 0xd6, 0xde, 0xde, 0x9e, 0xac, 0x57, 0xaf, 0x5e, 0xc9, + 0x7a, 0xfe, 0xfc, 0x39, 0xa2, 0xa2, 0xa2, 0xfe, 0x90, 0x41, 0x57, 0xaf, 0x5e, 0xf5, 0x2d, 0x2d, + 0x2d, 0xf5, 0xd0, 0x22, 0x26, 0x93, 0x09, 0x66, 0xb3, 0x99, 0x65, 0xb1, 0x58, 0x60, 0xb5, 0x5a, + 0x59, 0x4b, 0x4b, 0x4b, 0x18, 0x1e, 0x1e, 0x46, 0x7b, 0x7b, 0x3b, 0x6e, 0xdf, 0xbe, 0xcd, 0xce, + 0x6b, 0x6b, 0x6b, 0xa1, 0xd3, 0xe9, 0x30, 0x3d, 0x3d, 0x8d, 0x95, 0x95, 0x15, 0x85, 0x56, 0x57, + 0x57, 0xf1, 0xf2, 0xe5, 0x4b, 0x44, 0x46, 0x46, 0x42, 0x01, 0x12, 0x8e, 0x18, 0x24, 0x01, 0x24, + 0x08, 0x01, 0xe6, 0xe7, 0xe7, 0x51, 0x53, 0x53, 0x83, 0xb1, 0xb1, 0x31, 0x38, 0x1c, 0x0e, 0x6c, + 0x6f, 0x6f, 0xc3, 0xe1, 0xda, 0xc4, 0xd6, 0xd6, 0x16, 0xd6, 0xd6, 0xd6, 0xa0, 0x56, 0xab, 0x79, + 0x03, 0xf4, 0xac, 0xcd, 0x66, 0x63, 0xd1, 0xfd, 0x0f, 0x82, 0x6e, 0xdc, 0xb8, 0xc1, 0xa0, 0xc9, + 0xc9, 0x49, 0xf4, 0xf4, 0xf4, 0xb0, 0x33, 0x82, 0x69, 0xb5, 0x5a, 0xdc, 0xbd, 0x7b, 0x17, 0x9b, + 0x9b, 0x9b, 0x68, 0xed, 0x99, 0x46, 0x58, 0x66, 0x33, 0x82, 0x52, 0x9b, 0xa0, 0x4a, 0xd7, 0x20, + 0xe4, 0x5c, 0x13, 0x7e, 0xc9, 0xd7, 0xc1, 0xb6, 0xe1, 0xe2, 0xcd, 0x88, 0x35, 0xd0, 0xd5, 0xd5, + 0xc5, 0x8e, 0xd6, 0xd7, 0xd7, 0x19, 0x14, 0x11, 0x11, 0xa1, 0x04, 0x15, 0x14, 0x14, 0x30, 0x68, + 0x6a, 0x6a, 0x8a, 0x1f, 0xa4, 0x9d, 0x93, 0x3b, 0x2a, 0x0c, 0x72, 0x10, 0x2f, 0x16, 0x8c, 0xc9, + 0xe9, 0x84, 0x76, 0xc4, 0x8a, 0x09, 0xa3, 0x13, 0xa6, 0x75, 0x37, 0x9e, 0x2e, 0x6f, 0xa1, 0xee, + 0xe1, 0x02, 0x02, 0x52, 0xd4, 0xe8, 0x7d, 0xbc, 0x88, 0xd9, 0xd9, 0x59, 0xb4, 0xb4, 0xb4, 0x30, + 0xc4, 0x6e, 0xb7, 0x33, 0x28, 0x3c, 0x3c, 0xfc, 0x1d, 0x28, 0x33, 0x33, 0xd3, 0xf7, 0xda, 0xb5, + 0x6b, 0x0c, 0x92, 0xec, 0x13, 0x4c, 0xa3, 0xd1, 0xc0, 0x68, 0x34, 0xa2, 0xac, 0x59, 0x8f, 0x58, + 0x01, 0x69, 0x1b, 0x5a, 0xc4, 0xe3, 0xf9, 0x35, 0xcc, 0x5a, 0x1c, 0x30, 0xad, 0x8a, 0xb0, 0xb9, + 0x76, 0x61, 0x73, 0xb8, 0xd1, 0x33, 0xb5, 0x0a, 0xff, 0x64, 0x35, 0xec, 0xae, 0x6d, 0x34, 0x34, + 0x34, 0x70, 0x54, 0x68, 0xa3, 0x04, 0x0a, 0x0b, 0x0b, 0x53, 0x82, 0x44, 0xe9, 0x7a, 0xa8, 0x82, + 0x96, 0x97, 0x97, 0xe5, 0x84, 0x8a, 0xfb, 0x70, 0x8a, 0x5c, 0xd0, 0x22, 0x45, 0x5a, 0x03, 0x3a, + 0x47, 0x97, 0xd8, 0xcd, 0x9c, 0x70, 0x62, 0x5a, 0x73, 0x63, 0xc9, 0xbe, 0xc3, 0x32, 0x0b, 0x77, + 0x85, 0x2d, 0x93, 0xb8, 0x54, 0xd9, 0x83, 0xb9, 0xb9, 0x39, 0xb4, 0xb6, 0xb6, 0xc2, 0xe9, 0x74, + 0xc2, 0xe3, 0xf1, 0x20, 0x34, 0x34, 0x54, 0x09, 0xca, 0xc9, 0xc9, 0x51, 0x80, 0x9e, 0x3d, 0x7b, + 0xc6, 0xa0, 0xc1, 0x27, 0x0b, 0x88, 0xbe, 0xd8, 0x86, 0x5f, 0xef, 0xe9, 0x51, 0xdc, 0x36, 0x8e, + 0xc1, 0x99, 0x15, 0x8c, 0x0a, 0x57, 0x93, 0x46, 0x3b, 0x66, 0xcd, 0x76, 0x18, 0x2c, 0x76, 0xcc, + 0x98, 0xd6, 0xd1, 0x31, 0x60, 0x40, 0x44, 0x96, 0x86, 0x0b, 0xe8, 0xd6, 0xad, 0x5b, 0x32, 0xe8, + 0xe8, 0xd1, 0xa3, 0x4a, 0x90, 0x68, 0x42, 0x06, 0x11, 0x84, 0x42, 0xd7, 0xdb, 0xdb, 0x8b, 0xdc, + 0xdc, 0x5c, 0xdc, 0xd1, 0x8e, 0x22, 0xee, 0xb7, 0x07, 0x28, 0xee, 0x9c, 0x63, 0xb5, 0xe9, 0xad, + 0x18, 0x59, 0xb0, 0x63, 0x5c, 0x38, 0x9b, 0xb5, 0x8a, 0x22, 0x58, 0xd9, 0xc2, 0xa2, 0xd0, 0xe3, + 0xf9, 0x75, 0x84, 0x65, 0x68, 0x38, 0xf4, 0xa2, 0x2f, 0xe1, 0x72, 0xb9, 0x18, 0x14, 0x12, 0x12, + 0xa2, 0x04, 0x65, 0x65, 0x65, 0x79, 0xa8, 0xe1, 0x08, 0x42, 0x3d, 0x40, 0x89, 0x8d, 0x8b, 0x8b, + 0xc3, 0x83, 0x47, 0xd3, 0x88, 0xbc, 0xd0, 0x82, 0xdc, 0xfa, 0x11, 0x59, 0xd5, 0xbf, 0xcf, 0xe0, + 0xe1, 0x13, 0x33, 0x06, 0xa6, 0x2c, 0x18, 0x9e, 0xb6, 0x60, 0x64, 0xc6, 0x8c, 0xd6, 0xee, 0x31, + 0x44, 0xbe, 0x75, 0x54, 0x54, 0x54, 0xc4, 0xa5, 0x4f, 0xa0, 0xa0, 0xa0, 0xa0, 0x77, 0xa0, 0xf8, + 0xf8, 0x78, 0x5f, 0x31, 0x4e, 0x64, 0x10, 0xf5, 0x00, 0x55, 0x0e, 0x55, 0x8c, 0x75, 0x69, 0x19, + 0x7e, 0x49, 0x0d, 0xec, 0xa6, 0xe4, 0xfe, 0x53, 0x59, 0x77, 0x1e, 0x2c, 0xa2, 0x5d, 0x6f, 0x41, + 0xef, 0xe4, 0x0a, 0x1e, 0x19, 0x6c, 0xa8, 0xd2, 0x4d, 0xe1, 0x62, 0xf9, 0x43, 0xce, 0x51, 0x63, + 0x63, 0xa3, 0x0c, 0x0a, 0x08, 0x08, 0x50, 0x82, 0x52, 0x52, 0x52, 0x38, 0x74, 0xe4, 0x46, 0x02, + 0xd1, 0x2c, 0x1b, 0x1a, 0x1a, 0x42, 0x91, 0xfa, 0x91, 0xa8, 0x3a, 0xad, 0xc2, 0x55, 0xbe, 0x5a, + 0x8f, 0xa2, 0xe6, 0x61, 0x54, 0xb4, 0x0d, 0xa3, 0xe6, 0xfe, 0x08, 0x54, 0x69, 0x1a, 0xac, 0x6e, + 0x38, 0x51, 0x5f, 0x5f, 0x8f, 0xf1, 0xf1, 0x71, 0x6e, 0x09, 0x02, 0x1d, 0x39, 0x72, 0x44, 0x09, + 0x12, 0x83, 0x91, 0x1d, 0x49, 0x90, 0x8d, 0x8d, 0x0d, 0x18, 0x0c, 0x06, 0x1c, 0x3b, 0x76, 0x8c, + 0x9b, 0x35, 0x2e, 0x4f, 0x8b, 0xa8, 0x4b, 0x5a, 0xdc, 0xd4, 0xce, 0xa1, 0x54, 0x37, 0x8f, 0x8a, + 0xae, 0x05, 0xdc, 0xeb, 0x33, 0xa2, 0x40, 0x54, 0x1b, 0x35, 0x70, 0xff, 0xb8, 0x91, 0x1b, 0x5c, + 0xb4, 0x09, 0xfa, 0xfb, 0xfb, 0x79, 0xce, 0x51, 0x79, 0xfb, 0xf9, 0xf9, 0x29, 0x41, 0x62, 0xfa, + 0xfe, 0x05, 0x44, 0xbf, 0x34, 0xb9, 0xd3, 0xd2, 0xd2, 0xde, 0x4c, 0x86, 0xde, 0x19, 0xa8, 0xce, + 0xa9, 0x45, 0xb9, 0x37, 0x20, 0x38, 0x55, 0xcd, 0xfa, 0x39, 0xff, 0x3e, 0xd6, 0x1c, 0x5b, 0xfc, + 0xbc, 0x5e, 0xaf, 0xe7, 0x86, 0xad, 0xae, 0xae, 0xe6, 0x89, 0xf2, 0xe2, 0xc5, 0x0b, 0x25, 0x48, + 0x8c, 0x73, 0x5f, 0x01, 0x53, 0x80, 0xa8, 0xb3, 0xe9, 0x65, 0x6a, 0xbc, 0xe6, 0xe6, 0x66, 0x9e, + 0x59, 0xb4, 0x53, 0x8a, 0xbd, 0x7b, 0x67, 0x87, 0x9b, 0x73, 0x77, 0x77, 0x97, 0x9f, 0xa3, 0xbe, + 0xa1, 0xbc, 0xd0, 0xa0, 0xcd, 0xc8, 0xc8, 0xe0, 0x69, 0x42, 0x21, 0x24, 0xf9, 0xfb, 0xfb, 0x2b, + 0x41, 0xe2, 0x1c, 0xf1, 0xd0, 0x68, 0x97, 0xdc, 0x48, 0x20, 0x5a, 0x9c, 0x4a, 0xbd, 0xb3, 0xb3, + 0x13, 0x89, 0x89, 0x89, 0x5c, 0x20, 0xd1, 0xd1, 0xd1, 0x7c, 0xf6, 0x9c, 0x3c, 0x79, 0x12, 0xc9, + 0xc9, 0xc9, 0xa8, 0xab, 0xab, 0x63, 0xe7, 0x4d, 0x4d, 0x4d, 0x5c, 0x71, 0x14, 0x01, 0x3a, 0xc7, + 0xe8, 0x9a, 0x7a, 0x51, 0x9c, 0x61, 0xdf, 0xc8, 0x20, 0xf1, 0x12, 0x83, 0x28, 0x2f, 0xdd, 0xdd, + 0xdd, 0xdc, 0xb8, 0x92, 0x23, 0xea, 0x09, 0x0a, 0x1d, 0xb9, 0xa1, 0x24, 0x93, 0x6b, 0x2a, 0x7f, + 0xba, 0xa6, 0xf0, 0x50, 0x2e, 0xe8, 0x3f, 0x0d, 0x5f, 0x1a, 0x41, 0x15, 0x15, 0x15, 0x5c, 0x48, + 0xd4, 0x4f, 0x14, 0x4a, 0x31, 0x75, 0x6c, 0x02, 0xf6, 0x3d, 0x83, 0x62, 0x63, 0x63, 0x19, 0x44, + 0x53, 0x98, 0x9a, 0x96, 0x5e, 0x94, 0x1c, 0xf5, 0xf5, 0xf5, 0xc9, 0xa2, 0xeb, 0x81, 0x81, 0x01, + 0xd6, 0xe0, 0xe0, 0x20, 0x9f, 0x45, 0x54, 0x5d, 0x14, 0x76, 0x02, 0xd2, 0x71, 0x41, 0x47, 0x0a, + 0x41, 0xc9, 0x0d, 0x9d, 0xd4, 0xa3, 0xa3, 0xa3, 0xe4, 0x4a, 0xe7, 0x25, 0x6a, 0xdd, 0x57, 0x54, + 0x97, 0x87, 0x5e, 0x90, 0xf2, 0x23, 0x85, 0x8e, 0x7e, 0xdf, 0x77, 0x44, 0x15, 0xb5, 0x23, 0xf2, + 0x44, 0x39, 0x22, 0x47, 0xf4, 0x9e, 0x74, 0xaa, 0xd2, 0x7f, 0xda, 0x10, 0xe5, 0x8b, 0xf2, 0x46, + 0x7d, 0x45, 0xbd, 0x99, 0x97, 0x97, 0xe7, 0x64, 0x90, 0x38, 0x37, 0x64, 0xd0, 0xe1, 0x1c, 0xd1, + 0xcc, 0x22, 0xd0, 0x61, 0x88, 0xdb, 0xed, 0x56, 0x80, 0xc8, 0xc9, 0x61, 0xd1, 0xbd, 0x89, 0x89, + 0x09, 0xce, 0x17, 0xb9, 0xee, 0xe8, 0xe8, 0x20, 0x47, 0x85, 0x5e, 0x2a, 0x95, 0xca, 0x47, 0xcc, + 0xa4, 0x3d, 0x7a, 0x88, 0x60, 0x92, 0xa4, 0xdd, 0x4a, 0x7a, 0x7f, 0xc1, 0x7f, 0x12, 0x39, 0x39, + 0x7d, 0xfa, 0x34, 0x41, 0x02, 0x85, 0x3e, 0xf2, 0x12, 0x9f, 0x2f, 0x85, 0xab, 0xbe, 0xc0, 0xc0, + 0xc0, 0x03, 0x01, 0x94, 0x15, 0x1c, 0x1c, 0xac, 0xb8, 0xfe, 0x3b, 0x89, 0x8d, 0x2a, 0x24, 0xdd, + 0x17, 0x53, 0x81, 0xd4, 0x26, 0xd6, 0xff, 0x9c, 0xab, 0x4e, 0x7c, 0x7c, 0x85, 0xbe, 0xf3, 0xf6, + 0xf6, 0xfe, 0xd1, 0xc7, 0xc7, 0x27, 0x58, 0xe8, 0xa7, 0xb7, 0x0a, 0x3d, 0xf4, 0xff, 0xdf, 0x48, + 0xe5, 0xf3, 0x66, 0x9d, 0x1f, 0xc4, 0xba, 0xdf, 0x0a, 0x7d, 0xc6, 0xa0, 0xb7, 0xb4, 0x8f, 0x85, + 0x3e, 0x25, 0x77, 0x42, 0x5f, 0xff, 0x47, 0x7d, 0x25, 0xf4, 0x85, 0xd0, 0x27, 0x52, 0xb3, 0x92, + 0xfe, 0x04, 0xe6, 0x65, 0xc3, 0xbb, 0x89, 0x46, 0xb5, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, + 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, }; const BITMAP_OPAQUE find_xpm[1] = {{ png, sizeof( png ), "find_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/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_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/new_pcb.cpp b/bitmaps_png/cpp_26/new_pcb.cpp index 93e658d06f..9859d0419b 100644 --- a/bitmaps_png/cpp_26/new_pcb.cpp +++ b/bitmaps_png/cpp_26/new_pcb.cpp @@ -8,85 +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, 0x04, 0xd4, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x96, 0x49, 0x4f, 0x5d, - 0x75, 0x18, 0x87, 0x31, 0x6a, 0xe2, 0xc2, 0x98, 0xe8, 0x86, 0x8d, 0x89, 0x71, 0xa3, 0x18, 0x1a, - 0x59, 0x6a, 0x5c, 0xba, 0xe0, 0xdb, 0x98, 0x7e, 0x08, 0x16, 0x5d, 0xb0, 0x64, 0x86, 0x96, 0x05, - 0x94, 0x36, 0x1d, 0x80, 0x96, 0x99, 0x36, 0x05, 0x0a, 0x65, 0x86, 0x32, 0xcf, 0x73, 0x69, 0x65, - 0x86, 0x0b, 0x1c, 0xc6, 0x0b, 0xbc, 0xfe, 0x9e, 0x57, 0xcf, 0xe5, 0x5c, 0x5b, 0x63, 0x62, 0xe2, - 0x49, 0xde, 0x1c, 0xee, 0xff, 0x9c, 0xfb, 0x7b, 0xde, 0xf9, 0x92, 0x92, 0x92, 0x92, 0xf2, 0x45, - 0x5a, 0x5a, 0xda, 0x77, 0x19, 0x19, 0x19, 0x37, 0xfe, 0x0f, 0x4b, 0x4f, 0x4f, 0xff, 0x41, 0x8c, - 0x2f, 0x65, 0x29, 0xe9, 0xbf, 0xaf, 0xad, 0xc5, 0x36, 0xb7, 0xb6, 0x6c, 0x6b, 0x7b, 0xdb, 0xb6, - 0x77, 0x76, 0x6c, 0x71, 0x69, 0xc9, 0x76, 0xf7, 0xf6, 0x6c, 0x2f, 0x16, 0xb3, 0x2d, 0x9d, 0x2f, - 0x2e, 0x2e, 0x5a, 0x6c, 0x7f, 0x3f, 0x61, 0x73, 0xf3, 0xf3, 0x76, 0x70, 0x78, 0xe8, 0xb6, 0xba, - 0xba, 0x6a, 0x87, 0x41, 0x60, 0x83, 0xaf, 0x5f, 0x5b, 0x4d, 0x6d, 0xad, 0xad, 0xbe, 0x7d, 0xeb, - 0x9f, 0x03, 0x99, 0xdf, 0x8f, 0x8e, 0xe2, 0x62, 0xfc, 0x04, 0xe8, 0xc7, 0xb5, 0xb5, 0xb5, 0x60, - 0x71, 0x69, 0xd9, 0xd6, 0x37, 0x36, 0xdd, 0x9e, 0x3c, 0x7d, 0x6a, 0x23, 0xa3, 0xa3, 0x0e, 0xdd, - 0xd8, 0xd4, 0xe7, 0x27, 0x4f, 0x6c, 0x6a, 0x7a, 0xda, 0xc1, 0x38, 0xc0, 0xf3, 0xf5, 0xf5, 0x75, - 0xdb, 0x17, 0xf4, 0xa9, 0xfe, 0xde, 0x3f, 0x38, 0xb0, 0x87, 0x0f, 0x1f, 0x5a, 0x5e, 0x5e, 0x9e, - 0x03, 0x43, 0x27, 0x30, 0x81, 0x2e, 0xc5, 0xf8, 0xc5, 0x41, 0xeb, 0x1b, 0x1b, 0xc1, 0xca, 0x9b, - 0x37, 0xb6, 0xb4, 0xbc, 0x6c, 0x43, 0xc3, 0xc3, 0x46, 0x74, 0x2e, 0x3e, 0x35, 0xe5, 0xc2, 0x3b, - 0xbb, 0xbb, 0x56, 0x5f, 0x5f, 0xef, 0x91, 0x22, 0xfe, 0xa2, 0xa5, 0xc5, 0xe4, 0x9c, 0x0b, 0xd5, - 0xd4, 0xd4, 0xd8, 0xa1, 0xee, 0x8f, 0x1e, 0x3d, 0xb2, 0xfc, 0xfc, 0x7c, 0x1b, 0x1a, 0x1a, 0xf2, - 0x68, 0x42, 0x3b, 0x8a, 0x82, 0x36, 0x04, 0xea, 0xed, 0xeb, 0xb3, 0xb1, 0xf1, 0x71, 0x2b, 0x2c, - 0x2c, 0x74, 0x20, 0x69, 0xc4, 0xf3, 0xb9, 0xb9, 0x39, 0x4f, 0x17, 0x11, 0x8e, 0xca, 0x10, 0x6f, - 0x6d, 0x6d, 0x55, 0xe4, 0x1b, 0x2e, 0x54, 0x5b, 0x57, 0x87, 0x98, 0x3d, 0x7e, 0xfc, 0xd8, 0x0a, - 0x0a, 0x0a, 0x6c, 0x58, 0x8e, 0x1e, 0x1d, 0x1f, 0x27, 0xec, 0xf8, 0xe4, 0xe4, 0x1a, 0xb4, 0xb9, - 0xb9, 0x19, 0x90, 0xa6, 0x49, 0x45, 0x90, 0x93, 0x93, 0x63, 0xe5, 0x77, 0xef, 0x7a, 0x54, 0x6f, - 0xdf, 0xbd, 0x73, 0xef, 0x0f, 0x94, 0x9a, 0xd1, 0xb1, 0x31, 0x1b, 0x93, 0x21, 0xde, 0xda, 0xd6, - 0x66, 0x72, 0xce, 0x85, 0xea, 0x04, 0x3a, 0xd6, 0xbd, 0xb2, 0xb2, 0xd2, 0x9d, 0x1c, 0x19, 0x19, - 0xb1, 0x93, 0x93, 0x93, 0xa8, 0x45, 0x40, 0x5b, 0x5b, 0x01, 0x29, 0xa3, 0x0e, 0x39, 0xb9, 0xb9, - 0x96, 0x2b, 0x7b, 0xf9, 0xf2, 0xa5, 0xa9, 0x49, 0xac, 0x45, 0xde, 0x53, 0x54, 0x20, 0xe3, 0x8a, - 0x18, 0x71, 0x9e, 0xe1, 0x08, 0x42, 0xa4, 0xf4, 0xf4, 0xf4, 0xd4, 0xaa, 0xaa, 0xaa, 0xac, 0xa8, - 0xa8, 0xc8, 0xa3, 0x3e, 0x3d, 0x3b, 0xb3, 0x33, 0x19, 0x77, 0x3d, 0xbb, 0x06, 0xa9, 0xb3, 0x02, - 0xea, 0x30, 0x2d, 0x10, 0x90, 0x5c, 0x15, 0x15, 0x31, 0x0a, 0x4e, 0x9a, 0x54, 0x50, 0x1b, 0x9f, - 0x98, 0xb0, 0x09, 0x19, 0xe2, 0xed, 0xed, 0xed, 0xb6, 0xad, 0xd4, 0x02, 0x68, 0x6c, 0x6c, 0x74, - 0xd1, 0xea, 0xea, 0x6a, 0x2b, 0x2e, 0x2e, 0x76, 0x67, 0xce, 0xcf, 0xcf, 0xa3, 0x16, 0x01, 0x6d, - 0x6f, 0x07, 0x0b, 0x6a, 0xe1, 0xe9, 0x99, 0x19, 0x87, 0xe4, 0xa9, 0xa8, 0x80, 0x48, 0x4f, 0x9b, - 0xd2, 0x44, 0x6a, 0x26, 0x27, 0x27, 0xdd, 0x10, 0xef, 0xe8, 0xe8, 0xb0, 0x1d, 0xa5, 0x1a, 0x21, - 0x40, 0xdc, 0x01, 0x95, 0x94, 0x94, 0xb8, 0x33, 0xf1, 0x78, 0x3c, 0x61, 0x49, 0x20, 0xd5, 0x27, - 0x98, 0x90, 0x08, 0x20, 0x20, 0x74, 0x4f, 0xc7, 0xab, 0x57, 0x0e, 0x02, 0x48, 0x14, 0x74, 0x20, - 0x11, 0xe3, 0xfd, 0x2b, 0x3d, 0xdb, 0x55, 0x06, 0x10, 0x6a, 0x6a, 0x6a, 0xf2, 0x7b, 0x43, 0x43, - 0x43, 0x12, 0xe8, 0xe2, 0xe2, 0xe2, 0x7d, 0x90, 0xbc, 0x0b, 0x68, 0xe3, 0x59, 0x75, 0x18, 0x90, - 0x7c, 0x75, 0x4f, 0x67, 0x57, 0x97, 0xd7, 0x81, 0x88, 0x88, 0x82, 0x68, 0x00, 0xe1, 0x3d, 0x11, - 0xed, 0xe9, 0x7d, 0x84, 0x88, 0x08, 0x51, 0x3a, 0x2f, 0x04, 0xf1, 0x39, 0x34, 0xbd, 0x93, 0x0c, - 0x1a, 0x18, 0x18, 0xf0, 0x89, 0x07, 0x42, 0x9b, 0x76, 0x75, 0x77, 0x5b, 0xbf, 0xce, 0x00, 0x13, - 0x05, 0x83, 0x49, 0xe1, 0x11, 0xe7, 0x79, 0xd8, 0x81, 0xb7, 0x6e, 0xdd, 0xf2, 0xe8, 0x2e, 0x2f, - 0x2f, 0xed, 0xf6, 0xed, 0xdb, 0xee, 0x10, 0x7f, 0x87, 0x26, 0xd8, 0x35, 0x48, 0x2f, 0x06, 0x0c, - 0xdd, 0xbc, 0x40, 0x88, 0x14, 0xa8, 0x4d, 0x7b, 0x7a, 0x7a, 0x6c, 0x60, 0x70, 0xd0, 0xca, 0xcb, - 0xcb, 0x3d, 0x8a, 0xe6, 0xe6, 0x66, 0x7b, 0xfe, 0xfc, 0xb9, 0x83, 0x2a, 0x2a, 0x2a, 0xbc, 0xbb, - 0x18, 0x5e, 0xc4, 0x19, 0xde, 0x10, 0x44, 0x8a, 0xaf, 0xae, 0xae, 0x12, 0xf6, 0x1e, 0x68, 0x76, - 0x76, 0xd6, 0x16, 0x16, 0x16, 0x1c, 0xc4, 0x3c, 0xf4, 0xf6, 0xf6, 0xba, 0xa7, 0x9c, 0x21, 0x8e, - 0x18, 0x5d, 0x48, 0x3a, 0x38, 0x63, 0xb6, 0x10, 0x47, 0x98, 0xe7, 0x88, 0xfe, 0x3b, 0x68, 0x6f, - 0x2f, 0x60, 0x66, 0x58, 0x9e, 0x40, 0x98, 0x87, 0x3e, 0x6d, 0x0a, 0x22, 0x09, 0xbb, 0x27, 0xcc, - 0x79, 0x34, 0x2d, 0x51, 0x41, 0xae, 0x3b, 0x77, 0xee, 0x78, 0x1d, 0xa3, 0xe7, 0x7a, 0xef, 0x1a, - 0xa4, 0xc2, 0x06, 0x74, 0x18, 0xbb, 0x0c, 0x08, 0x46, 0xcd, 0xfe, 0x09, 0xf2, 0x77, 0x00, 0x17, - 0xe7, 0xd1, 0xae, 0x0b, 0x9d, 0x4c, 0xea, 0x3a, 0x40, 0xaf, 0xb5, 0x75, 0x89, 0x08, 0x08, 0x83, - 0x37, 0xa8, 0xfa, 0xd0, 0x04, 0xd4, 0x01, 0x08, 0xb3, 0x44, 0x9b, 0x23, 0x4e, 0x13, 0x20, 0xcc, - 0x15, 0xd3, 0x46, 0x47, 0x90, 0x77, 0xc9, 0x06, 0xbb, 0x2e, 0xba, 0x54, 0xf5, 0xbd, 0x64, 0x90, - 0x96, 0x9f, 0x2d, 0x6b, 0x99, 0x86, 0x20, 0xc0, 0xec, 0xad, 0x07, 0x0f, 0x1e, 0x38, 0xa8, 0x45, - 0x3b, 0x8f, 0x99, 0x02, 0xc4, 0xd9, 0x8c, 0x66, 0x8e, 0x06, 0xe2, 0x5d, 0xea, 0xc7, 0xdf, 0x6c, - 0x15, 0x52, 0xce, 0x30, 0x87, 0x26, 0x47, 0x2f, 0xc4, 0xf8, 0xf9, 0x4f, 0x50, 0x2c, 0x16, 0xd0, - 0x96, 0x51, 0x10, 0xeb, 0x1e, 0x18, 0xe9, 0xc0, 0x7b, 0x06, 0x92, 0x99, 0x01, 0x54, 0x5a, 0x5a, - 0xea, 0x9e, 0x13, 0x4d, 0x76, 0x76, 0xb6, 0xd7, 0x05, 0xd1, 0xce, 0xce, 0x4e, 0xdf, 0xf6, 0x2b, - 0x2b, 0x2b, 0x6e, 0x4b, 0x2a, 0x85, 0x96, 0xed, 0x0b, 0x31, 0xbe, 0x71, 0x90, 0xbe, 0xe0, 0xed, - 0xbd, 0xac, 0x87, 0x40, 0xe8, 0x1e, 0xa2, 0xa1, 0x6e, 0x00, 0x00, 0xf1, 0x19, 0xe3, 0xe2, 0x8c, - 0x67, 0xa4, 0xb3, 0x5b, 0xf3, 0x46, 0x84, 0x6c, 0x88, 0x67, 0xcf, 0x9e, 0xf9, 0x1c, 0x01, 0x60, - 0xe7, 0x49, 0xab, 0x49, 0xfa, 0xdf, 0xca, 0x3e, 0x4d, 0x80, 0xf8, 0x49, 0x7e, 0xa3, 0x1f, 0xbf, - 0xb2, 0xb2, 0x32, 0x5f, 0x9a, 0xe4, 0x1c, 0x8f, 0xbb, 0xb4, 0x21, 0x00, 0x31, 0x63, 0x18, 0x17, - 0x67, 0x2c, 0x55, 0x9c, 0x23, 0x12, 0xc4, 0xef, 0xdd, 0xbf, 0xef, 0xcf, 0x38, 0xc7, 0xa1, 0xac, - 0xac, 0xac, 0x7b, 0x7f, 0x45, 0xf2, 0x89, 0x8e, 0x53, 0x12, 0x20, 0xc2, 0xa7, 0xd8, 0x14, 0x3f, - 0xec, 0x36, 0xd2, 0xc3, 0x5c, 0x84, 0x20, 0xe6, 0x87, 0xd4, 0x21, 0xdc, 0xdf, 0xdf, 0xef, 0x8e, - 0xe8, 0xb7, 0xcc, 0xcf, 0x59, 0x4b, 0x44, 0xa9, 0x26, 0xba, 0xba, 0x79, 0xf3, 0x66, 0xbe, 0x74, - 0xbf, 0x0e, 0x21, 0x49, 0x20, 0x3a, 0x84, 0x28, 0x80, 0x91, 0x12, 0x06, 0x16, 0x50, 0xd8, 0xd2, - 0x51, 0x10, 0xad, 0x4b, 0xd1, 0xf9, 0x09, 0x21, 0x0b, 0x44, 0x40, 0x5b, 0x2b, 0x8d, 0xf1, 0xcc, - 0xcc, 0xcc, 0xdf, 0xa4, 0x99, 0x2a, 0xfb, 0x38, 0x84, 0x24, 0x81, 0x78, 0x19, 0x10, 0xf3, 0x43, - 0x87, 0x11, 0x61, 0x74, 0x76, 0x58, 0x9a, 0x38, 0x10, 0x82, 0xf8, 0xcc, 0x08, 0xf0, 0xf3, 0xc0, - 0xff, 0x0d, 0x5a, 0x51, 0xfb, 0xa9, 0xa9, 0xa9, 0xbf, 0x4a, 0xef, 0x73, 0xd9, 0x47, 0x51, 0x48, - 0x08, 0xba, 0xa1, 0xf6, 0x5c, 0x93, 0x48, 0x5c, 0xd1, 0xc4, 0xb5, 0xa9, 0x13, 0x26, 0x70, 0x5c, - 0xa2, 0x09, 0xe3, 0xe2, 0xce, 0x33, 0x65, 0x20, 0xae, 0x34, 0xc7, 0x55, 0x93, 0xb8, 0x20, 0xbd, - 0xd2, 0xf9, 0x5e, 0xf6, 0xd9, 0x87, 0x20, 0x21, 0x88, 0x7f, 0xee, 0xd2, 0x65, 0x19, 0xff, 0xd1, - 0xf8, 0xee, 0x57, 0xd1, 0x7a, 0x7c, 0xc8, 0xfe, 0x00, 0x0a, 0x0d, 0x10, 0x76, 0xc6, 0x00, 0x96, - 0x87, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, + 0xce, 0x00, 0x00, 0x02, 0xbc, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x96, 0xb1, 0x6e, 0x1b, + 0x47, 0x10, 0x86, 0xbf, 0x99, 0x3b, 0x16, 0x76, 0xc3, 0xe8, 0x00, 0x35, 0x24, 0x61, 0x50, 0x4f, + 0xe2, 0x56, 0x2f, 0xa1, 0x57, 0x48, 0xa0, 0x52, 0x11, 0x54, 0x07, 0x10, 0x90, 0x56, 0xb0, 0xe1, + 0xca, 0xae, 0xf8, 0x00, 0x2e, 0xd9, 0xa4, 0x15, 0x60, 0x40, 0x10, 0xd2, 0xa4, 0x10, 0xa1, 0x44, + 0xe1, 0x11, 0x48, 0x63, 0x8b, 0x80, 0x62, 0x92, 0xb7, 0xb7, 0xeb, 0xc2, 0xdc, 0xe3, 0xde, 0xf2, + 0x8e, 0xb4, 0x81, 0x64, 0x81, 0xc5, 0xce, 0x2d, 0xee, 0xf6, 0x9f, 0x6f, 0x66, 0x67, 0x70, 0x02, + 0x0c, 0x81, 0x01, 0x90, 0xf2, 0xff, 0x0c, 0x03, 0xfc, 0x9d, 0x02, 0x2f, 0x3e, 0x7e, 0xfc, 0xf4, + 0x9b, 0x31, 0x06, 0x51, 0x41, 0x64, 0x3d, 0x01, 0xc2, 0x55, 0x04, 0xe0, 0xeb, 0xf3, 0x7a, 0xaf, + 0x7a, 0x16, 0x69, 0x55, 0x49, 0x92, 0x84, 0xe7, 0xcf, 0x9e, 0xbd, 0x4c, 0x01, 0x2d, 0x8a, 0x15, + 0x77, 0x77, 0x13, 0x86, 0x47, 0x47, 0xa8, 0x2a, 0xaa, 0xeb, 0x43, 0x62, 0x51, 0xd9, 0xec, 0xe3, + 0x1c, 0x02, 0xb8, 0xc0, 0xa6, 0x41, 0xd4, 0x59, 0x0b, 0xa0, 0x29, 0x80, 0x26, 0x09, 0xfd, 0x7e, + 0x8f, 0x24, 0xd1, 0xcd, 0xe1, 0x91, 0xc0, 0x16, 0x61, 0xb8, 0xc6, 0x84, 0xc1, 0xf0, 0xce, 0xa9, + 0xdf, 0xc8, 0xf3, 0xbc, 0x4e, 0x21, 0x82, 0xa8, 0xa2, 0xb1, 0xdd, 0xb4, 0xae, 0xed, 0xf0, 0xdd, + 0x6a, 0xae, 0x85, 0x52, 0x1f, 0xc7, 0xfe, 0x60, 0x40, 0x92, 0x24, 0x88, 0xf7, 0xe2, 0x7b, 0xc8, + 0x62, 0x3b, 0x18, 0xaa, 0x1a, 0x10, 0x39, 0x47, 0x3e, 0x9d, 0x7e, 0x7d, 0x7f, 0xed, 0x85, 0x36, + 0x90, 0x35, 0x12, 0x89, 0x54, 0x44, 0xb2, 0x8f, 0x48, 0x54, 0xe9, 0xf7, 0xfb, 0xa8, 0x6a, 0x8d, + 0xc2, 0xdb, 0x44, 0x7b, 0xec, 0x58, 0xd9, 0x9b, 0xa3, 0xd9, 0xac, 0x9e, 0xa3, 0x40, 0x54, 0x23, + 0x42, 0xef, 0x50, 0xe8, 0xd8, 0x56, 0x7e, 0x83, 0x59, 0x11, 0xa9, 0x2a, 0xfd, 0x5e, 0xaf, 0x4e, + 0x14, 0x51, 0xc5, 0x07, 0xee, 0xa2, 0x68, 0x1a, 0x7b, 0x6f, 0x5d, 0x9b, 0x97, 0xfb, 0x28, 0x9a, + 0x89, 0x44, 0xb6, 0x73, 0xd4, 0x42, 0x16, 0xc7, 0xbe, 0xed, 0xb9, 0x91, 0xc8, 0x39, 0xc7, 0x74, + 0x3a, 0xad, 0x2a, 0x3c, 0x14, 0xd1, 0x16, 0x82, 0x98, 0x26, 0x14, 0x6c, 0x25, 0x12, 0x55, 0x06, + 0x83, 0xc1, 0x86, 0x68, 0x5d, 0xe1, 0x12, 0x79, 0xdb, 0x46, 0xf4, 0x2d, 0xb9, 0xaa, 0x72, 0x34, + 0xf5, 0x75, 0xb4, 0x23, 0x17, 0x6d, 0x44, 0x6d, 0x74, 0xe1, 0x77, 0xb5, 0x1c, 0x35, 0x25, 0x7f, + 0x5f, 0xcd, 0x78, 0xdb, 0x5a, 0x8b, 0x73, 0x0e, 0xe7, 0x1c, 0x3e, 0x1d, 0x5b, 0xa1, 0x73, 0xeb, + 0x5b, 0xd7, 0xed, 0x76, 0x6b, 0x5d, 0xba, 0xc9, 0xb3, 0x78, 0xb5, 0xd6, 0x6e, 0x4d, 0x2f, 0x06, + 0x90, 0xa6, 0x69, 0x9d, 0xa8, 0x17, 0xdc, 0xba, 0x7d, 0xb5, 0xe2, 0xf7, 0xca, 0xb2, 0xc4, 0x5a, + 0x4b, 0x59, 0x96, 0x18, 0x63, 0xb6, 0xc4, 0x54, 0x95, 0xc5, 0x62, 0x61, 0x00, 0x57, 0x11, 0xcd, + 0xf2, 0x9c, 0x1f, 0xba, 0xdd, 0xc6, 0xb0, 0x34, 0x89, 0xfa, 0x03, 0x8b, 0xa2, 0xc0, 0x18, 0xc3, + 0x6a, 0xb5, 0x62, 0xb1, 0x58, 0xb0, 0x5c, 0x2e, 0x29, 0x8a, 0x82, 0x4e, 0xa7, 0x83, 0xb5, 0xd6, + 0x5e, 0x5d, 0x5d, 0xbd, 0x03, 0xe6, 0x1b, 0xa2, 0xa8, 0x33, 0xec, 0x0a, 0x9d, 0x17, 0x31, 0xc6, + 0x60, 0x8c, 0xe1, 0xe9, 0xe9, 0x89, 0x9b, 0x9b, 0x1b, 0x44, 0x84, 0x2c, 0xcb, 0xc8, 0xb2, 0x8c, + 0xf9, 0x7c, 0xee, 0x2e, 0x2f, 0x2f, 0x5f, 0x8d, 0x46, 0xa3, 0xb7, 0xc0, 0x1f, 0x55, 0x1d, 0xe5, + 0x79, 0x5e, 0x8b, 0xed, 0xae, 0xab, 0xeb, 0x9c, 0xa3, 0x2c, 0xcb, 0x2a, 0x64, 0x45, 0x51, 0x20, + 0x22, 0x1c, 0x1f, 0x1f, 0x33, 0x1c, 0x0e, 0x79, 0x7c, 0x7c, 0x74, 0x17, 0x17, 0x17, 0xbf, 0x8e, + 0x46, 0xa3, 0xd7, 0xc0, 0x2d, 0xf0, 0x39, 0xf5, 0x87, 0xf5, 0x7a, 0xbd, 0xbd, 0xf5, 0x20, 0x22, + 0xd5, 0xcd, 0xf2, 0xb9, 0x29, 0xcb, 0x92, 0xe5, 0x6a, 0xc5, 0xc1, 0xc1, 0x01, 0xb3, 0xd9, 0x8c, + 0x87, 0x87, 0x07, 0x7b, 0x7e, 0x7e, 0xfe, 0xcb, 0x78, 0x3c, 0x7e, 0x07, 0xfc, 0xe9, 0x9c, 0x5b, + 0xd6, 0x3a, 0x43, 0x4c, 0xb4, 0x4b, 0xd4, 0x8b, 0x79, 0xb2, 0xe5, 0x62, 0xc1, 0xe1, 0xe1, 0x21, + 0x93, 0xc9, 0xc4, 0x9c, 0x9e, 0x9e, 0xfe, 0x3c, 0x1e, 0x8f, 0xdf, 0x00, 0x13, 0x2f, 0xb2, 0xe9, + 0x0c, 0xdf, 0x48, 0xe4, 0x45, 0x42, 0xb1, 0xb2, 0x2c, 0x49, 0x92, 0x84, 0xfb, 0xfb, 0xfb, 0xf9, + 0xd9, 0xd9, 0xd9, 0x8f, 0xd7, 0xd7, 0xd7, 0xef, 0x81, 0x4f, 0xce, 0xb9, 0x32, 0xfc, 0x2e, 0x05, + 0xac, 0x26, 0x09, 0x59, 0x96, 0xed, 0xec, 0x02, 0x71, 0x2f, 0x4b, 0xd3, 0x14, 0xe7, 0x1c, 0x69, + 0xa7, 0x63, 0x6e, 0x6f, 0x6f, 0x3f, 0x9c, 0x9c, 0x9c, 0xfc, 0x54, 0x14, 0xc5, 0xef, 0xc0, 0xbf, + 0xae, 0x21, 0xd9, 0xf2, 0x1f, 0xfc, 0x40, 0x16, 0xc0, 0x5f, 0xc0, 0x3f, 0x61, 0xa8, 0xe2, 0xf1, + 0x05, 0x95, 0x9b, 0x4e, 0x78, 0x5f, 0x66, 0xb8, 0x85, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, + 0x44, 0xae, 0x42, 0x60, 0x82, }; const BITMAP_OPAQUE new_pcb_xpm[1] = {{ png, sizeof( png ), "new_pcb_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/cpp_48/icon_bitmap2component.cpp b/bitmaps_png/cpp_48/icon_bitmap2component.cpp index 345efcbb2c..e831592b8e 100644 --- a/bitmaps_png/cpp_48/icon_bitmap2component.cpp +++ b/bitmaps_png/cpp_48/icon_bitmap2component.cpp @@ -8,210 +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, 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, 0x05, 0x02, 0x49, 0x44, 0x41, 0x54, 0x68, 0xde, 0xdd, 0x59, 0x5b, 0x6c, 0x14, + 0x55, 0x18, 0x5e, 0xdd, 0x52, 0x15, 0xcb, 0x92, 0x72, 0x79, 0xe0, 0x09, 0xd2, 0x68, 0x2f, 0x5a, + 0x7b, 0xd1, 0x07, 0x22, 0x18, 0x25, 0xb1, 0x69, 0x79, 0x81, 0x07, 0x4a, 0x94, 0x9a, 0x6a, 0xe8, + 0x83, 0x49, 0x81, 0xc4, 0xc4, 0x07, 0x78, 0xb2, 0x17, 0x62, 0x4d, 0x78, 0xe0, 0x85, 0x47, 0x08, + 0xf0, 0x80, 0xbd, 0x28, 0xb1, 0xb6, 0x15, 0xbc, 0xd4, 0x00, 0x2b, 0x6d, 0x43, 0xbb, 0x97, 0xd9, + 0xad, 0xc4, 0xc6, 0xb4, 0x6b, 0x43, 0x8a, 0x10, 0xaa, 0xc1, 0x42, 0xd5, 0xa5, 0xed, 0x76, 0xb6, + 0xbf, 0xff, 0x7f, 0x3a, 0x67, 0x33, 0x3b, 0x3d, 0xbb, 0x7b, 0x66, 0x76, 0x26, 0x05, 0x37, 0xf9, + 0x32, 0xf3, 0xcd, 0xce, 0x9c, 0x39, 0xdf, 0x9c, 0xef, 0x3f, 0xff, 0x3f, 0x67, 0x5c, 0x00, 0xe0, + 0x4a, 0x05, 0xfc, 0x3d, 0x8f, 0x28, 0x4b, 0x77, 0x8e, 0x15, 0xe0, 0xef, 0x29, 0xc4, 0x6b, 0xd4, + 0x7e, 0xd6, 0x6d, 0x09, 0x1a, 0xcf, 0x41, 0x94, 0x22, 0xde, 0x47, 0x7c, 0x8a, 0x78, 0xcb, 0x6e, + 0x01, 0xda, 0x7d, 0xde, 0xd6, 0xda, 0xa7, 0xfb, 0xbc, 0x8c, 0x70, 0x67, 0x25, 0x40, 0x6b, 0xe4, + 0x00, 0xa2, 0x19, 0xf1, 0x99, 0x0e, 0x2f, 0x21, 0x36, 0x3b, 0x80, 0x57, 0x0c, 0xf7, 0x69, 0x42, + 0xbc, 0x8b, 0x28, 0x36, 0xf9, 0x20, 0x5c, 0x79, 0x88, 0x06, 0x43, 0x63, 0xab, 0x8d, 0x7a, 0xc4, + 0x73, 0xd2, 0x23, 0xa0, 0x79, 0x92, 0x6c, 0xf3, 0x1e, 0xa2, 0x65, 0x95, 0x46, 0xe0, 0x13, 0xc4, + 0x3b, 0x88, 0xa2, 0x6c, 0x63, 0x60, 0x0d, 0x05, 0x2e, 0xe2, 0xa0, 0xe6, 0xd1, 0x37, 0x1d, 0x8a, + 0x81, 0x2a, 0xc4, 0x71, 0xed, 0xa1, 0x95, 0x64, 0x1d, 0x03, 0x29, 0x6e, 0xe2, 0x41, 0xbc, 0xea, + 0xd0, 0x2c, 0x54, 0x2e, 0x6b, 0x13, 0xcb, 0x02, 0x9e, 0x04, 0xfc, 0x2f, 0x04, 0xe4, 0x20, 0x0e, + 0x20, 0xbc, 0x88, 0x87, 0xab, 0x8c, 0x07, 0x88, 0x1f, 0x11, 0xfb, 0x11, 0x6e, 0x81, 0xf5, 0x9e, + 0x15, 0x09, 0x68, 0x08, 0x06, 0x83, 0xf0, 0xb8, 0x21, 0x16, 0x8b, 0x7d, 0x20, 0x10, 0x50, 0x27, + 0x12, 0x10, 0xa6, 0x0b, 0xf4, 0x3f, 0x11, 0x1f, 0x9f, 0x1d, 0x87, 0xae, 0x5b, 0x5d, 0x70, 0x54, + 0x39, 0xca, 0xf8, 0x86, 0x2f, 0x37, 0x80, 0xeb, 0x73, 0x17, 0x03, 0x71, 0xbe, 0x2f, 0xc3, 0x47, + 0x02, 0x23, 0x70, 0x7a, 0xe2, 0x34, 0x3c, 0x52, 0x1f, 0xb1, 0xf6, 0x15, 0x45, 0x81, 0x78, 0x3c, + 0x9e, 0xb8, 0x1f, 0x71, 0x55, 0x55, 0x07, 0x0d, 0x9d, 0x7f, 0x41, 0x9b, 0x6e, 0x0b, 0x8d, 0x02, + 0x20, 0x9d, 0x80, 0xa9, 0x7f, 0xa7, 0x4c, 0x77, 0x30, 0x13, 0xbf, 0x11, 0xb8, 0xc1, 0xb6, 0x9b, + 0x2e, 0x6e, 0x82, 0xa6, 0xd1, 0x26, 0xa1, 0x80, 0xa5, 0xa5, 0xa5, 0x87, 0x06, 0x01, 0xb5, 0x9a, + 0x80, 0xfd, 0xa6, 0x04, 0xf4, 0xdc, 0xee, 0x71, 0x4c, 0x00, 0xc7, 0x70, 0x60, 0x18, 0xae, 0xdd, + 0xbb, 0x96, 0x52, 0x00, 0xe5, 0x08, 0x2d, 0xd1, 0xf1, 0x84, 0xe7, 0x5e, 0x21, 0xe0, 0x71, 0x03, + 0x8e, 0x88, 0x5e, 0x40, 0xb1, 0x21, 0x6b, 0x17, 0xaf, 0x10, 0x40, 0x43, 0xc8, 0xa1, 0xe7, 0xb5, + 0x3f, 0xd5, 0x32, 0x9e, 0xdb, 0x9e, 0x9b, 0x40, 0xb6, 0x9c, 0x9e, 0xb8, 0x91, 0xe7, 0x75, 0xe4, + 0x41, 0xc5, 0xe5, 0x0a, 0x88, 0xa9, 0x31, 0xd1, 0x08, 0xd4, 0x19, 0x04, 0xd4, 0x49, 0x5b, 0x68, + 0xeb, 0xd7, 0x5b, 0x1d, 0xb7, 0x10, 0x71, 0x12, 0x42, 0xfb, 0xe7, 0x7f, 0x3b, 0x9f, 0x24, 0x80, + 0xb2, 0xb5, 0x56, 0x72, 0xe8, 0x05, 0x1c, 0xe7, 0x59, 0x3c, 0xad, 0x80, 0x99, 0x85, 0x19, 0xe9, + 0x0e, 0x6e, 0xf9, 0x6a, 0x0b, 0x54, 0x7e, 0x5b, 0x09, 0x05, 0x3d, 0x05, 0x59, 0x09, 0xa8, 0xb9, + 0x5a, 0x63, 0x14, 0x40, 0x25, 0x47, 0x8d, 0xae, 0xf8, 0xab, 0x40, 0x54, 0xd3, 0xf1, 0x27, 0x22, + 0x06, 0xa8, 0x6e, 0xd2, 0xb6, 0xf9, 0x9a, 0x80, 0xcd, 0x49, 0xc7, 0xd3, 0xc5, 0xc0, 0xa9, 0x5f, + 0x4f, 0x25, 0x3c, 0xdc, 0x3a, 0xda, 0x0a, 0x91, 0xd9, 0xc8, 0x8a, 0x18, 0x91, 0xe5, 0x9e, 0x2e, + 0x4f, 0xc6, 0x18, 0x48, 0xc4, 0x8c, 0x12, 0x14, 0x4d, 0xa3, 0x49, 0x02, 0xa4, 0x62, 0xa0, 0xf7, + 0x76, 0x2f, 0x0c, 0xfd, 0x39, 0x04, 0x32, 0x89, 0x2e, 0x13, 0x6f, 0xf9, 0xb9, 0x45, 0xca, 0x42, + 0xcc, 0x72, 0x76, 0x09, 0xb0, 0x93, 0x0f, 0xfc, 0x31, 0xe0, 0xac, 0x00, 0x0a, 0x1c, 0x0e, 0x27, + 0x38, 0x75, 0x8a, 0x3a, 0x4a, 0x20, 0xce, 0xf7, 0x53, 0x71, 0x7d, 0x1e, 0x90, 0x12, 0x60, 0xd6, + 0xd3, 0x46, 0x1e, 0x8d, 0x45, 0x61, 0x62, 0x76, 0x02, 0x06, 0xa6, 0x07, 0x18, 0xf7, 0xde, 0xf3, + 0x26, 0x40, 0xbc, 0xed, 0x66, 0x9b, 0x74, 0x0c, 0xa4, 0x28, 0x25, 0xb2, 0xb7, 0xd0, 0xfd, 0xf9, + 0xfb, 0xd0, 0x79, 0xab, 0x93, 0xf1, 0xc3, 0xbe, 0xc3, 0xb0, 0xc7, 0xbb, 0x87, 0x25, 0x1f, 0x3b, + 0xf3, 0x40, 0x6e, 0x87, 0xcd, 0x02, 0xe6, 0xd4, 0x39, 0xc6, 0xab, 0xaf, 0x54, 0x43, 0x4e, 0x7b, + 0x8e, 0xe3, 0x89, 0xac, 0xa8, 0xaf, 0xc8, 0x9a, 0x00, 0x91, 0x87, 0x03, 0x4a, 0x80, 0x0d, 0xaf, + 0x8c, 0x67, 0xed, 0xe2, 0xbe, 0xa0, 0xcf, 0x9e, 0x18, 0xd8, 0x7d, 0x75, 0xb7, 0x6d, 0xb5, 0x8f, + 0x6c, 0x2d, 0x44, 0xfb, 0x94, 0x6f, 0xb2, 0xb2, 0xd0, 0xf4, 0xdc, 0xb4, 0xed, 0xb5, 0x8f, 0x19, + 0x0b, 0x75, 0x4f, 0x75, 0x5b, 0x17, 0x40, 0x7e, 0x2f, 0xf9, 0xa6, 0x64, 0x55, 0x05, 0x4c, 0xfe, + 0x33, 0x69, 0x3d, 0x06, 0xfc, 0x41, 0xbf, 0x69, 0xcf, 0xf2, 0x18, 0x21, 0xef, 0xd2, 0xf5, 0x81, + 0x60, 0x80, 0x71, 0xda, 0x72, 0xc8, 0xb6, 0x47, 0x6d, 0xf1, 0x18, 0x34, 0x1d, 0x03, 0x63, 0x0f, + 0xc6, 0x60, 0x6d, 0xc7, 0x5a, 0x69, 0x4f, 0xef, 0xf3, 0xee, 0x63, 0x6f, 0x51, 0x6a, 0x5c, 0x95, + 0xca, 0x13, 0x32, 0x31, 0xb0, 0xab, 0x7f, 0x17, 0x3b, 0xdf, 0xd2, 0x08, 0x1c, 0x0b, 0x1d, 0x33, + 0x65, 0x09, 0xd9, 0x52, 0x22, 0xf2, 0x77, 0x44, 0xda, 0x42, 0x47, 0xfc, 0x47, 0xd2, 0xbd, 0x13, + 0xa7, 0x17, 0x40, 0x75, 0xbc, 0x8c, 0x80, 0xd2, 0x4b, 0xa5, 0xa6, 0x04, 0x9c, 0xf8, 0xe5, 0x84, + 0xb4, 0x80, 0x33, 0x91, 0x33, 0xd6, 0x05, 0x98, 0x9d, 0xa7, 0x65, 0x6b, 0x21, 0x5a, 0x42, 0x91, + 0x6d, 0x9f, 0xea, 0x25, 0xcb, 0x31, 0x20, 0x3b, 0x8f, 0x9f, 0x8b, 0x9c, 0x93, 0xae, 0x95, 0xfa, + 0xa6, 0xfa, 0xa4, 0xf3, 0xc0, 0xfa, 0xce, 0xf5, 0xac, 0x9e, 0xb2, 0x1c, 0x03, 0xb2, 0xd3, 0x60, + 0xf3, 0x68, 0xb3, 0x94, 0x85, 0xee, 0x44, 0xef, 0xc0, 0xc6, 0x8b, 0x1b, 0xa5, 0xa7, 0xd1, 0xb2, + 0x4b, 0x65, 0x99, 0xd6, 0x85, 0xec, 0x11, 0x50, 0x7e, 0xb9, 0x5c, 0x4a, 0xc0, 0xce, 0x1f, 0x76, + 0x9a, 0xca, 0x03, 0xf5, 0x83, 0xf5, 0xd9, 0x09, 0x30, 0x5b, 0xbb, 0xa4, 0xf2, 0xbc, 0x99, 0x79, + 0x5f, 0xcf, 0x29, 0x87, 0xe8, 0xdb, 0x73, 0x2c, 0x06, 0x38, 0xdf, 0xd6, 0xbd, 0x0d, 0x1a, 0x87, + 0x1b, 0xe1, 0xe4, 0xd8, 0x49, 0xc6, 0x69, 0xfd, 0xa8, 0xb0, 0xb7, 0xd0, 0x72, 0x2d, 0xd4, 0xff, + 0x7b, 0x7f, 0x22, 0x86, 0x0c, 0xab, 0x12, 0xf4, 0xf1, 0xf1, 0x0d, 0x44, 0x01, 0x5f, 0x1b, 0x45, + 0xbc, 0x8e, 0xa8, 0x4c, 0x12, 0xe0, 0xf9, 0xc2, 0xe3, 0x58, 0xe9, 0x20, 0x63, 0xa1, 0xbb, 0xd1, + 0xbb, 0x42, 0x0b, 0xd1, 0x92, 0xba, 0x60, 0x5d, 0xa8, 0x8d, 0xbe, 0x1e, 0x25, 0x09, 0xd8, 0xeb, + 0xdd, 0x6b, 0x6b, 0x87, 0x29, 0x56, 0xaa, 0xae, 0x54, 0x49, 0xaf, 0x8d, 0xa6, 0x5b, 0xdc, 0x15, + 0xac, 0xcc, 0x35, 0x08, 0x6b, 0x21, 0x6a, 0xc8, 0xae, 0xfa, 0x9e, 0xe7, 0x00, 0xab, 0x31, 0x95, + 0x61, 0x6d, 0xb4, 0x62, 0x85, 0x00, 0x55, 0x55, 0xe1, 0xec, 0xf8, 0x59, 0x58, 0xd7, 0xb9, 0x8e, + 0x71, 0xda, 0x72, 0x98, 0xe1, 0x3b, 0xbe, 0xdb, 0xb1, 0xfc, 0x8e, 0xbc, 0x10, 0x85, 0xfc, 0xae, + 0x7c, 0xe1, 0xf9, 0xf4, 0xa0, 0xf4, 0x9c, 0x02, 0x38, 0x16, 0x8b, 0xb1, 0x3e, 0x10, 0x04, 0x23, + 0xf0, 0xb4, 0x6e, 0x75, 0xba, 0x15, 0x91, 0x9b, 0xf2, 0x7d, 0xe0, 0x90, 0xef, 0x90, 0x25, 0xcb, + 0xd0, 0xeb, 0x26, 0xad, 0xf5, 0x2f, 0xc4, 0x17, 0x18, 0x0f, 0xcf, 0x84, 0xa5, 0x63, 0x80, 0x66, + 0x2e, 0x13, 0xdf, 0x07, 0xea, 0x8d, 0xb3, 0xd0, 0x98, 0x68, 0x1e, 0xdf, 0xfe, 0xfd, 0x76, 0x29, + 0x01, 0xee, 0x76, 0xf7, 0xb2, 0x05, 0xfe, 0x52, 0x92, 0xae, 0xbf, 0x30, 0x79, 0x41, 0x5a, 0x00, + 0x95, 0x10, 0x82, 0x2f, 0x34, 0x3e, 0x83, 0x80, 0x17, 0x35, 0x01, 0xe5, 0x46, 0x01, 0x8d, 0xec, + 0x89, 0x85, 0xc3, 0x09, 0x70, 0xee, 0x57, 0xfc, 0x30, 0x1c, 0x5c, 0xae, 0xf7, 0x07, 0x03, 0x83, + 0x70, 0xdd, 0x7f, 0x9d, 0x81, 0x9e, 0xd8, 0x50, 0x60, 0x08, 0x46, 0x94, 0x11, 0x08, 0x85, 0x42, + 0x20, 0xba, 0x3e, 0x14, 0x0e, 0xb1, 0xff, 0xf8, 0xff, 0x7c, 0x3f, 0x15, 0x37, 0x5e, 0x8f, 0x96, + 0xfa, 0x50, 0xf0, 0x8d, 0xec, 0x20, 0x5f, 0x13, 0xd5, 0x0b, 0x78, 0x66, 0x7e, 0x7e, 0xfe, 0xe3, + 0xc5, 0xc5, 0xc5, 0x9b, 0xdc, 0x83, 0xab, 0x09, 0xec, 0x87, 0x82, 0xfd, 0xf9, 0x08, 0xfb, 0xb5, + 0x46, 0x20, 0x20, 0xcf, 0x78, 0xec, 0x3f, 0x1b, 0x75, 0xce, 0x5d, 0xf3, 0xcf, 0xc0, 0x5f, 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 33f2bae718..c336b69f38 100644 Binary files a/bitmaps_png/icons/icon_bitmap2component.ico and b/bitmaps_png/icons/icon_bitmap2component.ico differ 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/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/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/find.svg b/bitmaps_png/sources/find.svg index 47623cf7c1..f5901fee87 100644 --- a/bitmaps_png/sources/find.svg +++ b/bitmaps_png/sources/find.svg @@ -13,8 +13,8 @@ inkscape:export-ydpi="90.000000" inkscape:export-xdpi="90.000000" inkscape:export-filename="/home/steven/edit-find-48.png" - sodipodi:docname="find.svg.BASE" - inkscape:version="0.48.2 r9819" + sodipodi:docname="find.svg" + inkscape:version="0.48.3.1 r9886" sodipodi:version="0.32" id="svg249" height="26" @@ -59,18 +59,6 @@ offset="1.0000000" style="stop-color:#ffffff;stop-opacity:0.24761905;" /> - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -611,66 +800,74 @@ id="rect15686-03" style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970757;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:block;overflow:visible" /> - + id="g3976" + transform="translate(25.279068,-0.44194166)"> + id="path2844-9-9" + d="m -11.906647,26.457898 c -3.713666,0 -6.727656,2.978546 -6.727656,6.64854 0,3.669995 3.01399,6.648541 6.727656,6.648541 1.587627,0 2.9890449,-0.624233 4.140095,-1.534279 -0.093708,0.45401 -0.035603,0.917763 0.3450081,1.244471 l 5.0026161,4.29598 c 0.5627744,0.48307 1.4087257,0.419777 1.89754376,-0.13638 0.4888181,-0.556158 0.42477151,-1.39216 -0.13800297,-1.87523 l -5.00261609,-4.29598 c -0.3063996,-0.263005 -0.68116,-0.340872 -1.0522742,-0.289808 0.9064777,-1.13287 1.5352853,-2.501996 1.5352853,-4.057315 0,-3.669994 -3.0139896,-6.64854 -6.727655,-6.64854 z m -0.0345,0.552895 c 3.4856796,0 6.0646791,2.159374 6.0646791,5.99336 0,3.911673 -2.6539989,5.99336 -6.0646791,5.99336 -3.332138,0 -6.064678,-2.470112 -6.064678,-5.99336 0,-3.600093 2.657626,-5.99336 6.064678,-5.99336 z" + style="color:#000000;fill:#dcdcdc;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3985);stroke-width:1.80999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:r_cx="true" + inkscape:r_cy="true" /> + d="m -11.917901,26.429401 c -3.72567,0 -6.749403,2.988174 -6.749403,6.670032 0,3.681857 3.023733,6.670031 6.749403,6.670031 1.59276,0 2.9987074,-0.62625 4.1534789,-1.539237 -0.094011,0.455477 -0.035722,0.920729 0.3461228,1.248493 l 5.0187873,4.309866 c 0.5645936,0.484632 1.41327926,0.421134 1.90367743,-0.136821 0.49039817,-0.557954 0.42614443,-1.396659 -0.13844921,-1.881291 L -5.6530706,37.460607 c -0.3073902,-0.263854 -0.683362,-0.341974 -1.0556758,-0.290744 0.9094079,-1.136532 1.5402483,-2.510085 1.5402483,-4.07043 0,-3.681858 -3.0237325,-6.670032 -6.7494029,-6.670032 z m -0.03461,1.436622 c 2.8659006,0 5.1918483,2.298596 5.1918483,5.130794 0,2.832198 -2.3259477,5.130793 -5.1918483,5.130793 -2.8659,0 -5.191848,-2.298595 -5.191848,-5.130793 0,-2.832198 2.325948,-5.130794 5.191848,-5.130794 z" + id="path4430-3-6" + inkscape:r_cx="true" + inkscape:r_cy="true" /> + inkscape:connector-curvature="0" + style="color:#000000;fill:url(#linearGradient3987);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + d="m -2.3799238,43.788135 c -0.2184051,-1.024997 0.637564,-2.169506 1.63530681,-2.159114 0,0 -4.90966551,-4.174551 -4.90966551,-4.174551 -1.3436287,-0.02557 -1.9480587,1.02474 -1.7232584,2.074139 l 4.9976171,4.259526 z" + id="path4438-0-4" + sodipodi:nodetypes="ccccc" + inkscape:r_cx="true" + inkscape:r_cy="true" /> + transform="matrix(0.56839909,0,0,0.56171489,-21.968801,22.255175)" + inkscape:r_cx="true" + inkscape:r_cy="true" /> + style="opacity:0.43315507;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.70510882;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect4495-7-3" + width="8.6471872" + height="2.0123112" + x="19.239033" + y="32.352734" + rx="1.5078329" + ry="1.3300102" + transform="matrix(0.75682702,0.65361522,-0.65333777,0.75706655,0,0)" + inkscape:r_cx="true" + inkscape:r_cy="true" /> + transform="matrix(0.63815043,0,0,0.63064598,-23.245907,21.298384)" + inkscape:r_cx="true" + inkscape:r_cy="true" /> + inkscape:connector-curvature="0" + style="opacity:0.83422457;color:#000000;fill:url(#radialGradient3993);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + d="m -11.921206,28.37567 c 2.3760829,0 4.3001667,1.901457 4.3001667,4.249598 0,0.678154 -0.1917749,1.302119 -0.4777963,1.871222 -0.5714273,0.208145 -1.1784425,0.349762 -1.8227046,0.349762 -2.8156408,0 -5.0643028,-2.192149 -5.2380628,-4.931633 0.789792,-0.922345 1.920927,-1.538949 3.238397,-1.538949 z" + id="path4462-9-8" + inkscape:r_cx="true" + inkscape:r_cy="true" /> 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/icon_bitmap2component.svg b/bitmaps_png/sources/icon_bitmap2component.svg index 23a0abdd8b..c5446344d4 100644 --- a/bitmaps_png/sources/icon_bitmap2component.svg +++ b/bitmaps_png/sources/icon_bitmap2component.svg @@ -5,7 +5,6 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" height="48" @@ -13,7 +12,10 @@ version="1.1" id="svg2" inkscape:version="0.48.3.1 r9886" - sodipodi:docname="5-icon_bitmap2component.svg"> + 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 +24,7 @@ image/svg+xml + @@ -34,1085 +37,225 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1280" - inkscape:window-height="949" + inkscape:window-width="1600" + inkscape:window-height="849" id="namedview345" - showgrid="false" - inkscape:zoom="4.9166667" - inkscape:cx="24" - inkscape:cy="23.59322" + showgrid="true" + inkscape:zoom="18.178537" + inkscape:cx="11.963811" + inkscape:cy="27.182846" inkscape:window-x="0" - inkscape:window-y="25" + 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"> + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + transform="scale(0.97123869,1.029613)" + style="font-size:61.97896957px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#00a300;fill-opacity:1;stroke:none;font-family:Sans" + id="text3327"> - + d="m 20.91299,29.527713 c -2.703528,1.5e-5 -4.751333,0.423699 -6.143423,1.271053 -1.371944,0.827206 -2.057908,2.057907 -2.057896,3.692106 -1.2e-5,1.230712 0.403496,2.199132 1.210527,2.905265 0.827179,0.706147 1.957003,1.059217 3.389475,1.05921 2.21928,7e-6 4.075419,-0.665782 5.568423,-1.997369 1.492959,-1.351745 2.491642,-3.248235 2.996053,-5.689475 l 0.242106,-1.24079 -5.205265,0 m 16.917111,-4.085528 -3.782896,19.338165 -10.834214,0 0.907895,-5.023686 c -1.775461,2.017547 -3.651776,3.510529 -5.62895,4.478949 -1.977209,0.948245 -4.125892,1.422368 -6.446055,1.422369 -3.2079039,-10e-7 -5.7600952,-0.827194 -7.6565814,-2.48158 -1.8763184,-1.674559 -2.8144757,-3.924119 -2.8144747,-6.748687 -1e-6,-4.317533 1.6644716,-7.616215 4.9934229,-9.896056 3.3491146,-2.29998 8.1710412,-3.44998 14.4657942,-3.450001 l 6.385529,0 0.121053,-0.847369 c 0.0605,-0.282433 0.09076,-0.484188 0.09079,-0.605263 0.02015,-0.12103 0.03024,-0.231995 0.03026,-0.332895 -2.7e-5,-1.331555 -0.635553,-2.330238 -1.906579,-2.996054 -1.250902,-0.685938 -3.117129,-1.02892 -5.598686,-1.028948 -2.239492,2.8e-5 -4.408351,0.232045 -6.506582,0.696053 -2.098257,0.464062 -4.1258874,1.160114 -6.0828967,2.088159 l 1.6342112,-8.261845 c 2.2596385,-0.564879 4.5697255,-0.988563 6.9302655,-1.271053 2.380685,-0.302597 4.842087,-0.453913 7.384213,-0.453948 5.023658,3.5e-5 8.756112,0.867578 11.197373,2.602633 2.441192,1.714943 3.661805,4.337748 3.661843,7.868424 -3.8e-5,0.685988 -0.05048,1.442567 -0.151316,2.269737 -0.08074,0.807039 -0.211879,1.68467 -0.393421,2.632896" + style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#00a300;font-family:Sans;-inkscape-font-specification:Sans Bold Italic" + id="path3302" /> + id="g4585" + transform="matrix(1.011705,0,0,1,-0.00570879,0)" + style="stroke:#cccccc"> - + inkscape:connector-curvature="0" + id="path3333-6" + d="m 0.98772317,30.533269 36.59759283,0 0,0" + style="fill:none;stroke:#cccccc;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + inkscape:connector-curvature="0" + id="path3333-33" + d="m 0.98772317,34.538333 36.59759283,0 0,0" + style="fill:none;stroke:#cccccc;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + + + + + + + + - - - - - - - - - - + id="g4563" + transform="matrix(1,0,0,0.99268819,-0.08251488,0.07386002)" + style="stroke:#cccccc"> + inkscape:connector-curvature="0" + id="path3333-79-6-7" + d="m 9.5832994,10.601471 0,36.617177 0,0" + style="fill:none;stroke:#cccccc;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + inkscape:connector-curvature="0" + id="path3333-79-6-7-4" + d="m 5.5802244,10.601471 0,36.617177 0,0" + style="fill:none;stroke:#cccccc;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + inkscape:connector-curvature="0" + id="path3333-79-6-7-7" + d="m 1.5771496,10.601471 0,36.617177 0,0" + style="fill:none;stroke:#cccccc;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + inkscape:connector-curvature="0" + id="path3333-79-6-7-6" + d="m 17.589451,10.601471 0,36.617177 0,0" + style="fill:none;stroke:#cccccc;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + inkscape:connector-curvature="0" + id="path3333-79-6-7-46" + d="m 21.592522,10.601471 0,36.617177 0,0" + style="fill:none;stroke:#cccccc;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + inkscape:connector-curvature="0" + id="path3333-79-6-7-9" + d="m 25.595599,10.601471 0,36.617177 0,0" + style="fill:none;stroke:#cccccc;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + inkscape:connector-curvature="0" + id="path3333-79-6-7-5" + d="m 29.598674,10.60147 0,36.617178 0,0" + style="fill:none;stroke:#cccccc;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + inkscape:connector-curvature="0" + id="path3333-79-6-7-8" + d="m 33.60175,10.601471 0,36.617177 0,0" + style="fill:none;stroke:#cccccc;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + inkscape:connector-curvature="0" + id="path3333-79-6-7-66" + d="m 37.604823,10.60147 0,36.617178 0,0" + style="fill:none;stroke:#cccccc;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + inkscape:connector-curvature="0" + id="path3333-79-6-7-56" + d="m 13.586375,10.601471 0,36.617177 0,0" + style="fill:none;stroke:#cccccc;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + + + 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" /> + 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/new_pcb.svg b/bitmaps_png/sources/new_pcb.svg index 2bbefe13c9..43bc57cf56 100644 --- a/bitmaps_png/sources/new_pcb.svg +++ b/bitmaps_png/sources/new_pcb.svg @@ -8,12 +8,12 @@ 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.0" id="svg2" inkscape:version="0.48.3.1 r9886" - sodipodi:docname="new_pcb.svg"> + sodipodi:docname="new_sch.svg"> @@ -22,7 +22,7 @@ image/svg+xml - + @@ -39,22 +39,24 @@ inkscape:window-height="849" id="namedview356" showgrid="true" - inkscape:zoom="8.146395" - inkscape:cx="33.460702" - inkscape:cy="37.915782" + inkscape:zoom="22.961538" + inkscape:cx="13.043551" + inkscape:cy="13" inkscape:window-x="0" inkscape:window-y="29" inkscape:window-maximized="1" inkscape:current-layer="svg2" - inkscape:snap-grids="false" + inkscape:snap-grids="true" inkscape:snap-to-guides="false"> + snapvisiblegridlinesonly="true" + spacingx="0.5px" + spacingy="0.5px" /> @@ -120,448 +122,6 @@ stdDeviation="1.9447689" id="feGaussianBlur13" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + style="opacity:0.5;filter:url(#bb)" + sodipodi:nodetypes="cccccccc" /> + style="fill:#ffffff" + sodipodi:nodetypes="cccccc" /> + style="fill:url(#radialGradient3371)" + sodipodi:nodetypes="cssssccssscc" /> + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + style="opacity:0.4;filter:url(#bc)" + sodipodi:nodetypes="ccccc" /> + style="fill:url(#linearGradient3327)" + sodipodi:nodetypes="ccccc" /> + + + + + + + + + + + + + + + + + + + + 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/common/CMakeLists.txt b/common/CMakeLists.txt index c671446014..7bc4b9ed88 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -57,6 +57,10 @@ set( GAL_SRCS add_library( gal STATIC ${GAL_SRCS} ) add_dependencies( gal shader_headers ) +add_dependencies( gal lib-dependencies ) +add_dependencies( shader_headers lib-dependencies ) + + # Only for win32 cross compilation using MXE if( WIN32 AND MSYS ) add_definitions( -DGLEW_STATIC ) @@ -183,6 +187,7 @@ set( COMMON_SRCS add_library( common STATIC ${COMMON_SRCS} ) +add_dependencies( common lib-dependencies ) set( PCB_COMMON_SRCS base_screen.cpp @@ -250,6 +255,7 @@ set_source_files_properties( ${PCB_COMMON_SRCS} PROPERTIES ) add_library( pcbcommon STATIC ${PCB_COMMON_SRCS} ) +add_dependencies( pcbcommon lib-dependencies ) # auto-generate specctra_lexer.h and specctra_keywords.cpp make_lexer( @@ -316,3 +322,6 @@ make_lexer( # to build it, first enable #define STAND_ALONE at top of dsnlexer.cpp add_executable( dsntest EXCLUDE_FROM_ALL dsnlexer.cpp ) target_link_libraries( dsntest common ${wxWidgets_LIBRARIES} rt ) + +add_dependencies( dsntest lib-dependencies ) + diff --git a/common/dialog_about/AboutDialog_main.cpp b/common/dialog_about/AboutDialog_main.cpp index d66561fe5d..91377a60a1 100644 --- a/common/dialog_about/AboutDialog_main.cpp +++ b/common/dialog_about/AboutDialog_main.cpp @@ -302,6 +302,8 @@ static void InitKiCadAboutNew( AboutAppInfo& info ) new Contributor( wxT( "Iñigo Zuluagaz" ), wxT( "inigo_zuluaga@yahoo.es" ), wxT( "Icons by" ), KiBitmapNew( edit_module_xpm ) ) ); info.AddArtist( new Contributor( wxT( "Fabrizio Tappero" ), wxT( "fabrizio.tappero@gmail.com" ), wxT( "New icons by" ), KiBitmapNew( edit_module_xpm ) ) ); + info.AddArtist( + new Contributor( wxT( "Konstantin Baranovskiy" ), wxT( "baranovskiykonstantin@gmail.com" ), wxT( "New icons by" ), KiBitmapNew( edit_module_xpm ) ) ); info.AddArtist( new Contributor( wxT( "Renie Marquet" ), wxT( "reniemarquet@uol.com.br" ), wxT( "3D modules by" ), KiBitmapNew( three_d_xpm ) ) ); info.AddArtist( diff --git a/common/eda_doc.cpp b/common/eda_doc.cpp index 495359cf06..0c5d756fa5 100644 --- a/common/eda_doc.cpp +++ b/common/eda_doc.cpp @@ -19,6 +19,9 @@ void EDA_APP::ReadPdfBrowserInfos() wxASSERT( m_commonSettings != NULL ); m_PdfBrowser = m_commonSettings->Read( wxT( "PdfBrowserName" ), wxEmptyString ); + int tmp; + m_commonSettings->Read( wxT( "UseSystemBrowser" ), &tmp, 0 ); + m_useSystemPdfBrowser = tmp != 0; } @@ -27,6 +30,7 @@ void EDA_APP::WritePdfBrowserInfos() wxASSERT( m_commonSettings != NULL ); m_commonSettings->Write( wxT( "PdfBrowserName" ), m_PdfBrowser ); + m_commonSettings->Write( wxT( "UseSystemBrowser" ), m_useSystemPdfBrowser ); } diff --git a/common/edaappl.cpp b/common/edaappl.cpp index a512c0dc84..6ac3ba3d1e 100644 --- a/common/edaappl.cpp +++ b/common/edaappl.cpp @@ -273,6 +273,7 @@ EDA_APP::EDA_APP() m_Locale = NULL; m_projectSettings = NULL; m_commonSettings = NULL; + ForceSystemPdfBrowser( false ); } @@ -501,8 +502,8 @@ void EDA_APP::SetDefaultSearchPaths() #ifdef __WXMSW__ tmp.AddEnvList( wxT( "PROGRAMFILES" ) ); #elif __WXMAC__ - tmp.Add( wxString( wxGetenv( wxT( "HOME" ) ) ) + wxT( "/Library/Application Support" ) ); - tmp.Add( wxT( "/Library/Application Support" ) ); + tmp.Add( wxString( wxGetenv( wxT( "HOME" ) ) ) + wxT( "/Library/Application Support/kicad/" ) ); + tmp.Add( wxT( "/Library/Application Support/kicad/" ) ); #else tmp.AddEnvList( wxT( "PATH" ) ); #endif @@ -1195,3 +1196,102 @@ 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 __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 + // 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 ) ) + { + wxSetEnv( aKiSys3Dmod, path ); + return true; + } + + // Try the official distrib standard install path: + path = wxT("/usr/share/kicad/") + relpath; + + if( wxFileName::DirExists( path ) ) + { + wxSetEnv( aKiSys3Dmod, path ); + return true; + } + +#else // Windows + // 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 ) ) + { + wxSetEnv( aKiSys3Dmod, path ); + return true; + } +#endif + + return false; +} + diff --git a/common/gr_basic.cpp b/common/gr_basic.cpp index 22a58b338a..1e256225b0 100644 --- a/common/gr_basic.cpp +++ b/common/gr_basic.cpp @@ -623,18 +623,10 @@ void GRLineArray( EDA_RECT* aClipBox, wxDC* aDC, std::vector& aLines, aClipBox->Inflate(-aWidth/2); } - +// Draw the outline of a thick segment wih rounded ends void GRCSegm( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2, int width, int aPenSize, EDA_COLOR_T Color ) { - long radius; - int dwx, dwy; - long dx, dy, dwx2, dwy2; - long sx1, sy1, ex1, ey1; - long sx2, sy2, ex2, ey2; - bool swap_ends = false; - - GRLastMoveToX = x2; GRLastMoveToY = y2; @@ -658,114 +650,63 @@ void GRCSegm( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2, GRSetColorPen( DC, Color, aPenSize ); GRSetBrush( DC, Color, false ); - radius = (width + 1) >> 1; + int radius = (width + 1) >> 1; + int dx = x2 - x1; + int dy = y2 - y1; + double angle = -ArcTangente( dy, dx ); + wxPoint start; + wxPoint end; + wxPoint org( x1, y1); + int len = (int) hypot( dx, dy ); - dx = x2 - x1; - dy = y2 - y1; + // We know if the DC is mirrored, to draw arcs + int slx = DC->DeviceToLogicalX( 1 ) - DC->DeviceToLogicalX( 0 ); + int sly = DC->DeviceToLogicalY( 1 ) - DC->DeviceToLogicalY( 0 ); + bool mirrored = (slx > 0 && sly < 0) || (slx < 0 && sly > 0); - if( dx == 0 ) /* segment vertical */ - { - dwx = radius; - if( dy >= 0 ) - dwx = -dwx; + // first edge + start.x = 0; + start.y = radius; + end.x = len; + end.y = radius; + RotatePoint( &start, angle); + RotatePoint( &end, angle); - sx1 = x1 - dwx; - sy1 = y1; + start += org; + end += org; - ex1 = x2 - dwx; - ey1 = y2; + DC->DrawLine( start, end ); - DC->DrawLine( sx1, sy1, ex1, ey1 ); + // first rounded end + end.x = 0; + end.y = -radius; + RotatePoint( &end, angle); + end += org; - sx2 = x1 + dwx; - sy2 = y1; - - ex2 = x2 + dwx; - ey2 = y2; - - DC->DrawLine( sx2, sy2, ex2, ey2 ); - } - else if( dy == 0 ) /* segment horizontal */ - { - dwy = radius; - if( dx < 0 ) - dwy = -dwy; - - sx1 = x1; - sy1 = y1 - dwy; - - ex1 = x2; - ey1 = y2 - dwy; - - DC->DrawLine( sx1, sy1, ex1, ey1 ); - - sx2 = x1; - sy2 = y1 + dwy; - - ex2 = x2; - ey2 = y2 + dwy; - - DC->DrawLine( sx2, sy2, ex2, ey2 ); - } + if( !mirrored ) + DC->DrawArc( end, start, org ); else - { - if( std::abs( dx ) == std::abs( dy ) ) // segment 45 degrees - { - dwx = dwy = ( (width * 5) + 4 ) / 7; // = width / 2 * 0.707 - if( dy < 0 ) - { - if( dx <= 0 ) - { - dwx = -dwx; swap_ends = true; - } - } - else // dy >= 0 - { - if( dx > 0 ) - { - dwy = -dwy; swap_ends = true; - } - else - swap_ends = true; - } - } - else - { - double delta_angle = ArcTangente( dy, dx ); - dwx = 0; - dwy = width; - RotatePoint( &dwx, &dwy, -delta_angle ); - } - dwx2 = dwx >> 1; - dwy2 = dwy >> 1; + DC->DrawArc( start, end, org ); - sx1 = x1 - dwx2; - sy1 = y1 - dwy2; - ex1 = x2 - dwx2; - ey1 = y2 - dwy2; + // second edge + start.x = len; + start.y = -radius; + RotatePoint( &start, angle); + start += org; - DC->DrawLine( sx1, sy1, ex1, ey1 ); + DC->DrawLine( start, end ); - sx2 = x1 + dwx2; - sy2 = y1 + dwy2; + // second rounded end + end.x = len; + end.y = radius; + RotatePoint( &end, angle); + end += org; - ex2 = x2 + dwx2; - ey2 = y2 + dwy2; - - DC->DrawLine( sx2, sy2, ex2, ey2 ); - } - - if( swap_ends ) - { - DC->DrawArc( sx2, sy2, sx1, sy1, x1, y1 ); - DC->DrawArc( ex1, ey1, ex2, ey2, x2, y2 ); - } + if( !mirrored ) + DC->DrawArc( end.x, end.y, start.x, start.y, x2, y2 ); else - { - DC->DrawArc( sx1, sy1, sx2, sy2, x1, y1 ); - DC->DrawArc( ex2, ey2, ex1, ey1, x2, y2 ); - } + DC->DrawArc( start.x, start.y, end.x, end.y, x2, y2 ); } diff --git a/common/msgpanel.cpp b/common/msgpanel.cpp index 29d87cd38e..9004f03d6b 100644 --- a/common/msgpanel.cpp +++ b/common/msgpanel.cpp @@ -28,11 +28,6 @@ * @brief Message panel implementation file. */ -#ifdef __GNUG__ -#pragma implementation -#endif - - #include diff --git a/cvpcb/cvframe.cpp b/cvpcb/cvframe.cpp index 307ee5829b..a5ad9fe60e 100644 --- a/cvpcb/cvframe.cpp +++ b/cvpcb/cvframe.cpp @@ -493,6 +493,10 @@ void CVPCB_MAINFRAME::LoadNetList( wxCommandEvent& event ) wxGetApp().GetLibraryPathList().Insert( newFileName.GetPath(), 0 ); m_NetlistFileName = newFileName; ReadNetListAndLinkFiles(); + + // OSX need it since some objects are "rebuild" just make aware AUI + // Fixes #1258081 + m_auimgr.Update(); } @@ -934,6 +938,15 @@ void CVPCB_MAINFRAME::CreateScreenCmp() { if( m_DisplayFootprintFrame->IsIconized() ) m_DisplayFootprintFrame->Iconize( false ); + + // The display footprint window might be buried under some other + // windows, so CreateScreenCmp() on an existing window would not + // show any difference, leaving the user confused. + // So we want to put it to front, second after our CVPCB_MAINFRAME. + // We do this by a little dance of bringing it to front then the main + // frame back. + m_DisplayFootprintFrame->Raise(); // Make sure that is visible. + Raise(); // .. but still we want the focus. } m_DisplayFootprintFrame->InitDisplay(); 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/eeschema/CMakeLists.txt b/eeschema/CMakeLists.txt index 05dd30bf82..45411d8fae 100644 --- a/eeschema/CMakeLists.txt +++ b/eeschema/CMakeLists.txt @@ -19,6 +19,8 @@ set( EESCHEMA_DLGS dialogs/dialog_bom.cpp dialogs/dialog_bom_base.cpp dialogs/dialog_bom_cfg_keywords.cpp + dialogs/dialog_choose_component.cpp + dialogs/dialog_choose_component_base.cpp dialogs/dialog_lib_edit_text.cpp dialogs/dialog_lib_edit_text_base.cpp dialogs/dialog_edit_component_in_lib.cpp @@ -88,6 +90,7 @@ set( EESCHEMA_SRCS files-io.cpp find.cpp getpart.cpp + component_tree_search_container.cpp hierarch.cpp hotkeys.cpp libarch.cpp diff --git a/eeschema/class_libentry.cpp b/eeschema/class_libentry.cpp index 489114efb8..4b2dcee8a9 100644 --- a/eeschema/class_libentry.cpp +++ b/eeschema/class_libentry.cpp @@ -286,7 +286,7 @@ void LIB_COMPONENT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDc, const wxPoint& aOff int aConvert, GR_DRAWMODE aDrawMode, EDA_COLOR_T aColor, const TRANSFORM& aTransform, bool aShowPinText, bool aDrawFields, bool aOnlySelected ) { - BASE_SCREEN* screen = aPanel->GetScreen(); + BASE_SCREEN* screen = aPanel ? aPanel->GetScreen() : NULL; GRSetDrawMode( aDc, aDrawMode ); @@ -296,7 +296,7 @@ void LIB_COMPONENT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDc, const wxPoint& aOff * printing in black and white * If the color is not the default color (aColor != -1 ) */ - if( ! (screen->m_IsPrinting && GetGRForceBlackPenState()) + if( ! (screen && screen->m_IsPrinting && GetGRForceBlackPenState()) && (aColor == UNSPECIFIED_COLOR) ) { BOOST_FOREACH( LIB_ITEM& drawItem, drawings ) @@ -372,10 +372,11 @@ void LIB_COMPONENT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDc, const wxPoint& aOff // Enable this to draw the anchor of the component. #if 0 int len = aDc->DeviceToLogicalXRel( 3 ); + EDA_RECT* const clipbox = aPanel ? aPanel->GetClipBox() : NULL; - GRLine( aPanel->GetClipBox(), aDc, aOffset.x, aOffset.y - len, aOffset.x, + GRLine( clipbox, aDc, aOffset.x, aOffset.y - len, aOffset.x, aOffset.y + len, 0, aColor ); - GRLine( aPanel->GetClipBox(), aDc, aOffset.x - len, aOffset.y, aOffset.x + len, + GRLine( clipbox, aDc, aOffset.x - len, aOffset.y, aOffset.x + len, aOffset.y, 0, aColor ); #endif @@ -383,7 +384,7 @@ void LIB_COMPONENT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDc, const wxPoint& aOff * the bounding box calculations. */ #if 0 EDA_RECT bBox = GetBoundingBox( aMulti, aConvert ); - GRRect( aPanel->GetClipBox(), aDc, bBox.GetOrigin().x, bBox.GetOrigin().y, + GRRect( aPanel ? aPanel->GetClipBox() : NULL, aDc, bBox.GetOrigin().x, bBox.GetOrigin().y, bBox.GetEnd().x, bBox.GetEnd().y, 0, LIGHTMAGENTA ); #endif } diff --git a/eeschema/class_libentry.h b/eeschema/class_libentry.h index 695102bc20..43fb8ccc45 100644 --- a/eeschema/class_libentry.h +++ b/eeschema/class_libentry.h @@ -403,7 +403,7 @@ public: /** * Draw component. * - * @param aPanel - Window to draw on. + * @param aPanel - Window to draw on. Can be NULL if not available. * @param aDc - Device context to draw on. * @param aOffset - Position to component. * @param aMulti - Component unit if multiple parts per component. diff --git a/eeschema/component_tree_search_container.cpp b/eeschema/component_tree_search_container.cpp new file mode 100644 index 0000000000..015397349d --- /dev/null +++ b/eeschema/component_tree_search_container.cpp @@ -0,0 +1,394 @@ +/* -*- c++ -*- + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2014 Henner Zeller + * Copyright (C) 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 + * 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 + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +// Each node gets this lowest score initially, without any matches applied. Matches +// will then increase this score depending on match quality. +// This way, an empty search string will result in all components being displayed as they +// have the minimum score. However, in that case, we avoid expanding all the nodes asd the +// result is very unspecific. +static const unsigned kLowestDefaultScore = 1; + +struct COMPONENT_TREE_SEARCH_CONTAINER::TREE_NODE +{ + // Levels of nodes. + enum NODE_TYPE { + TYPE_LIB, + TYPE_ALIAS, + TYPE_UNIT + }; + + TREE_NODE(NODE_TYPE aType, TREE_NODE* aParent, LIB_ALIAS* aAlias, + const wxString& aName, const wxString& aDisplayInfo, + const wxString& aSearchText ) + : Type( aType ), + Parent( aParent ), Alias( aAlias ), Unit( 0 ), + DisplayName( aName ), + DisplayInfo( aDisplayInfo ), + MatchName( aName.Lower() ), + SearchText( aSearchText.Lower() ), + MatchScore( 0 ), PreviousScore( 0 ) + { + } + + const NODE_TYPE Type; ///< Type of node in the hierarchy. + TREE_NODE* const Parent; ///< NULL if library, pointer to parent when component/alias. + LIB_ALIAS* const Alias; ///< Component alias associated with this entry. + int Unit; ///< Part number; Assigned: >= 1; default = 0 + const wxString DisplayName; ///< Exact name as displayed to the user. + const wxString DisplayInfo; ///< Additional info displayed in the tree (description..) + + const wxString MatchName; ///< Preprocessed: lowercased display name. + const wxString SearchText; ///< Other text (keywords, description..) to search in. + + unsigned MatchScore; ///< Result-Score after UpdateSearchTerm() + unsigned PreviousScore; ///< Optimization: used to see if we need any tree update. + wxTreeItemId TreeId; ///< Tree-ID if stored in the tree (if MatchScore > 0). +}; + + +// Sort tree nodes by reverse match-score (bigger is first), then alphabetically. +// Library (i.e. the ones that don't have a parent) are always sorted before any +// leaf nodes. Component +bool COMPONENT_TREE_SEARCH_CONTAINER::scoreComparator( const TREE_NODE* a1, const TREE_NODE* a2 ) +{ + if( a1->Type != a2->Type ) + return a1->Type < a2->Type; + + if( a1->MatchScore != a2->MatchScore ) + return a1->MatchScore > a2->MatchScore; // biggest first. + + if( a1->Parent != a2->Parent ) + return scoreComparator( a1->Parent, a2->Parent ); + + return a1->MatchName.Cmp( a2->MatchName ) < 0; +} + + +COMPONENT_TREE_SEARCH_CONTAINER::COMPONENT_TREE_SEARCH_CONTAINER() + : tree( NULL ), libraries_added( 0 ), preselect_unit_number( -1 ) +{ +} + + +COMPONENT_TREE_SEARCH_CONTAINER::~COMPONENT_TREE_SEARCH_CONTAINER() +{ + BOOST_FOREACH( TREE_NODE* node, nodes ) + delete node; + nodes.clear(); +} + + +void COMPONENT_TREE_SEARCH_CONTAINER::SetPreselectNode( const wxString& aComponentName, + int aUnit ) +{ + preselect_node_name = aComponentName.Lower(); + preselect_unit_number = aUnit; +} + + +void COMPONENT_TREE_SEARCH_CONTAINER::SetTree( wxTreeCtrl* aTree ) +{ + tree = aTree; + UpdateSearchTerm( wxEmptyString ); +} + + +void COMPONENT_TREE_SEARCH_CONTAINER::AddLibrary( CMP_LIBRARY& aLib ) +{ + wxArrayString all_aliases; + + aLib.GetEntryNames( all_aliases ); + AddAliasList( aLib.GetName(), all_aliases, &aLib ); + ++libraries_added; +} + + +void COMPONENT_TREE_SEARCH_CONTAINER::AddAliasList( const wxString& aNodeName, + const wxArrayString& aAliasNameList, + CMP_LIBRARY* aOptionalLib ) +{ + static const wxChar unitLetter[] = wxT( "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ); + + TREE_NODE* const lib_node = new TREE_NODE( TREE_NODE::TYPE_LIB, NULL, NULL, + aNodeName, wxEmptyString, wxEmptyString ); + nodes.push_back( lib_node ); + + BOOST_FOREACH( const wxString& aName, aAliasNameList ) + { + LIB_ALIAS* a; + + if( aOptionalLib ) + a = aOptionalLib->FindAlias( aName ); + else + a = CMP_LIBRARY::FindLibraryEntry( aName, wxEmptyString ); + + if( a == NULL ) + continue; + + wxString search_text; + search_text = ( a->GetKeyWords().empty() ) ? wxT(" ") : a->GetKeyWords(); + search_text += a->GetDescription(); + + wxString display_info; + + if( !a->GetDescription().empty() ) + { + // Preformatting. Unfortunately, the tree widget doesn't have columns + display_info.Printf( wxT(" %s[ %s ]"), + ( a->GetName().length() <= 8 ) ? wxT("\t\t") : wxT("\t"), + GetChars( a->GetDescription() ) ); + } + + TREE_NODE* alias_node = new TREE_NODE( TREE_NODE::TYPE_ALIAS, lib_node, + a, a->GetName(), display_info, search_text ); + nodes.push_back( alias_node ); + + if( a->GetComponent()->IsMulti() ) // Add all units as sub-nodes. + for ( int u = 0; u < a->GetComponent()->GetPartCount(); ++u ) + { + const wxString unitName = unitLetter[u]; + TREE_NODE* unit_node = new TREE_NODE(TREE_NODE::TYPE_UNIT, alias_node, a, + _("Unit ") + unitName, + wxEmptyString, wxEmptyString ); + unit_node->Unit = u + 1; + nodes.push_back( unit_node ); + } + } +} + + +LIB_ALIAS* COMPONENT_TREE_SEARCH_CONTAINER::GetSelectedAlias( int* aUnit ) +{ + const wxTreeItemId& select_id = tree->GetSelection(); + + BOOST_FOREACH( TREE_NODE* node, nodes ) + { + if( node->MatchScore > 0 && node->TreeId == select_id ) { + if( aUnit && node->Unit > 0 ) + *aUnit = node->Unit; + return node->Alias; + } + } + return NULL; +} + + +// Creates a score depending on the position of a string match. If the position +// is 0 (= prefix match), this returns the maximum score. This degrades until +// pos == max, which returns a score of 0; +// Evertyhing else beyond that is just 0. Only values >= 0 allowed for position and max. +// +// @param aPosition is the position a string has been found in a substring. +// @param aMaximum is the maximum score this function returns. +// @return position dependent score. +static int matchPosScore(int aPosition, int aMaximum) +{ + return ( aPosition < aMaximum ) ? aMaximum - aPosition : 0; +} + + +void COMPONENT_TREE_SEARCH_CONTAINER::UpdateSearchTerm( const wxString& aSearch ) +{ + if( tree == NULL ) + return; + + // We score the list by going through it several time, essentially with a complexity + // of O(n). For the default library of 2000+ items, this typically takes less than 5ms + // on an i5. Good enough, no index needed. + + // Initial AND condition: Leaf nodes are considered to match initially. + BOOST_FOREACH( TREE_NODE* node, nodes ) + { + node->PreviousScore = node->MatchScore; + node->MatchScore = ( node->Type == TREE_NODE::TYPE_LIB ) ? 0 : kLowestDefaultScore; + } + + // Create match scores for each node for all the terms, that come space-separated. + // Scoring adds up values for each term according to importance of the match. If a term does + // not match at all, the result is thrown out of the results (AND semantics). + // From high to low + // - Exact match for a ccmponent name gives the highest score, trumping all. + // - A positional score depending of where a term is found as substring; prefix-match: high. + // - substring-match in library name. + // - substring match in keywords and descriptions with positional score. Keywords come + // first so contribute more to the score. + // + // This is of course subject to tweaking. + wxStringTokenizer tokenizer( aSearch ); + + while ( tokenizer.HasMoreTokens() ) + { + const wxString term = tokenizer.GetNextToken().Lower(); + + BOOST_FOREACH( TREE_NODE* node, nodes ) + { + if( node->Type != TREE_NODE::TYPE_ALIAS ) + continue; // Only aliases are actually scored here. + + if( node->MatchScore == 0) + continue; // Leaf node without score are out of the game. + + // Keywords and description we only count if the match string is at + // least two characters long. That avoids spurious, low quality + // matches. Most abbreviations are at three characters long. + int found_pos; + + if( term == node->MatchName ) + node->MatchScore += 1000; // exact match. High score :) + else if( (found_pos = node->MatchName.Find( term ) ) != wxNOT_FOUND ) + { + // Substring match. The earlier in the string the better. score += 20..40 + node->MatchScore += matchPosScore( found_pos, 20 ) + 20; + } + else if( node->Parent->MatchName.Find( term ) != wxNOT_FOUND ) + node->MatchScore += 19; // parent name matches. score += 19 + else if( ( found_pos = node->SearchText.Find( term ) ) != wxNOT_FOUND ) + { + // If we have a very short search term (like one or two letters), we don't want + // to accumulate scores if they just happen to be in keywords or description as + // almost any one or two-letter combination shows up in there. + // For longer terms, we add scores 1..18 for positional match (higher in the + // front, where the keywords are). score += 0..18 + node->MatchScore += ( ( term.length() >= 2 ) + ? matchPosScore( found_pos, 17 ) + 1 + : 0 ); + } + else + node->MatchScore = 0; // No match. That's it for this item. + } + } + + // Library nodes have the maximum score seen in any of their children. + // Alias nodes have the score of their parents. + unsigned highest_score_seen = 0; + bool any_change = false; + + BOOST_FOREACH( TREE_NODE* node, nodes ) + { + switch( node->Type ) + { + case TREE_NODE::TYPE_ALIAS: + { + any_change |= (node->PreviousScore != node->MatchScore); + // Update library score. + node->Parent->MatchScore = std::max( node->Parent->MatchScore, node->MatchScore ); + highest_score_seen = std::max( highest_score_seen, node->MatchScore ); + } + break; + + case TREE_NODE::TYPE_UNIT: + node->MatchScore = node->Parent->MatchScore; + break; + + default: + break; + } + } + + // The tree update might be slow, so we want to bail out if there is no change. + if( !any_change ) + return; + + // Now: sort all items according to match score, libraries first. + std::sort( nodes.begin(), nodes.end(), scoreComparator ); + + // Fill the tree with all items that have a match. Re-arranging, adding and removing changed + // items is pretty complex, so we just re-build the whole tree. + tree->Freeze(); + tree->DeleteAllItems(); + const wxTreeItemId root_id = tree->AddRoot( wxEmptyString ); + const TREE_NODE* first_match = NULL; + const TREE_NODE* preselected_node = NULL; + + BOOST_FOREACH( TREE_NODE* node, nodes ) + { + if( node->MatchScore == 0 ) + continue; + + // If we have nodes that go beyond the default score, suppress nodes that + // have the default score. That can happen if they have an honary += 0 score due to + // some one-letter match in the keyword or description. In this case, we prefer matches + // that just have higher scores. Improves relevancy and performance as the tree has to + // display less items. + if( highest_score_seen > kLowestDefaultScore && node->MatchScore == kLowestDefaultScore ) + continue; + + wxString node_text; +#if 0 + // Node text with scoring information for debugging + node_text.Printf( wxT("%s (s=%u)%s"), GetChars(node->DisplayName), + node->MatchScore, GetChars( node->DisplayInfo )); +#else + node_text = node->DisplayName + node->DisplayInfo; +#endif + node->TreeId = tree->AppendItem( node->Parent ? node->Parent->TreeId : root_id, + node_text ); + + // If we are a nicely scored alias, we want to have it visible. Also, if there + // is only a single library in this container, we want to have it unfolded + // (example: power library). + if( node->Type == TREE_NODE::TYPE_ALIAS + && ( node->MatchScore > kLowestDefaultScore || libraries_added == 1 ) ) + { + tree->EnsureVisible( node->TreeId ); + + if( first_match == NULL ) + first_match = node; // First, highest scoring: the "I am feeling lucky" element. + } + + // The first node that matches our pre-select criteria is choosen. 'First node' + // means, it shows up in the history, as the history node is displayed very first + // (by virtue of alphabetical ordering) + if( preselected_node == NULL + && node->Type == TREE_NODE::TYPE_ALIAS + && node->MatchName == preselect_node_name ) + preselected_node = node; + + // Refinement in case we come accross a matching unit node. + if( preselected_node != NULL && preselected_node->Type == TREE_NODE::TYPE_ALIAS + && node->Parent == preselected_node + && preselect_unit_number >= 1 && node->Unit == preselect_unit_number ) + preselected_node = node; + } + + if( first_match ) // Highest score search match pre-selected. + tree->SelectItem( first_match->TreeId ); + else if( preselected_node ) // No search, so history item preselected. + tree->SelectItem( preselected_node->TreeId ); + + tree->Thaw(); +} diff --git a/eeschema/component_tree_search_container.h b/eeschema/component_tree_search_container.h new file mode 100644 index 0000000000..88bd52474f --- /dev/null +++ b/eeschema/component_tree_search_container.h @@ -0,0 +1,116 @@ +/* -*- c++ -*- + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2014 Henner Zeller + * Copyright (C) 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 + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, you may find one here: + * http: *www.gnu.org/licenses/old-licenses/gpl-2.0.html + * or you may search the http: *www.gnu.org website for the version 2 license, + * or you may write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ +#ifndef COMPONENT_TREE_SEARCH_CONTAINER_H +#define COMPONENT_TREE_SEARCH_CONTAINER_H + +#include +#include + +class LIB_ALIAS; +class CMP_LIBRARY; +class wxTreeCtrl; +class wxArrayString; + +// class COMPONENT_TREE_SEARCH_CONTAINER +// A container for components that allows to search them matching their name, keywords +// and descripotions, updating a wxTreeCtrl with the results (toplevel nodes: +// libraries, leafs: components), scored by relevance. +// +// The scored result list is adpated on each update on the search-term: this allows +// to have a search-as-you-type experience. +class COMPONENT_TREE_SEARCH_CONTAINER +{ +public: + COMPONENT_TREE_SEARCH_CONTAINER(); + ~COMPONENT_TREE_SEARCH_CONTAINER(); + + /** Function AddLibrary + * Add all the components and their aliases of this library to be searched. + * To be called in the setup phase to fill this container. + * + * @param aLib containting all the components to be added. + */ + void AddLibrary( CMP_LIBRARY& aLib ); + + /** Function AddComponentList + * Add the given list of components, given by name, to be searched. + * To be called in the setup phase to fill this container. + * + * @param aNodeName The parent node name the components will show up as leaf. + * @param aAliasNameList List of alias names. + * @param aOptionalLib Library to look up the component names (if NULL: global lookup) + */ + void AddAliasList( const wxString& aNodeName, const wxArrayString& aAliasNameList, + CMP_LIBRARY* aOptionalLib ); + + /** Function SetPreselectNode + * Set the component name to be selected in absence of any search-result. + * + * @param aComponentName the component name to be selected. + * @param aUnit the component unit to be selected (if > 0). + */ + void SetPreselectNode( const wxString& aComponentName, int aUnit ); + + /** Function SetTree + * Set the tree to be manipulated. + * Each update of the search term will update the tree, with the most + * scoring component at the top and selected. If a preselect node is set, this + * is displayed. Does not take ownership of the tree. + * + * @param aTree that is to be modified on search updates. + */ + void SetTree( wxTreeCtrl* aTree ); + + /** Function UpdateSearchTerm + * Update the search string provided by the user and narrow down the result list. + * + * This string is a space-separated list of terms, each of which + * is applied to the components list to narrow it down. Results are scored by + * relevancy (e.g. exact match scores higher than prefix-match which in turn scores + * higher than substring match). This updates the search and tree on each call. + * + * @param aSearch is the user-provided search string. + */ + void UpdateSearchTerm( const wxString& aSearch ); + + /** Function GetSelectedAlias + * + * @param if not-NULL, the selected sub-unit is set here. + * @return the selected alias or NULL if there is none. + */ + LIB_ALIAS* GetSelectedAlias( int* aUnit ); + +private: + struct TREE_NODE; + static bool scoreComparator( const TREE_NODE* a1, const TREE_NODE* a2 ); + + std::vector nodes; + wxTreeCtrl* tree; + int libraries_added; + + wxString preselect_node_name; + int preselect_unit_number; +}; + +#endif /* COMPONENT_TREE_SEARCH_CONTAINER_H */ diff --git a/eeschema/dialogs/dialog_choose_component.cpp b/eeschema/dialogs/dialog_choose_component.cpp new file mode 100644 index 0000000000..1039acf1f6 --- /dev/null +++ b/eeschema/dialogs/dialog_choose_component.cpp @@ -0,0 +1,294 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2014 Henner Zeller + * Copyright (C) 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 + * 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 + +#include +#include +#include + +#include +#include +#include + +// Tree navigation helpers. +static wxTreeItemId GetPrevItem( const wxTreeCtrl& tree, const wxTreeItemId& item ); +static wxTreeItemId GetNextItem( const wxTreeCtrl& tree, const wxTreeItemId& item ); + +DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT( wxWindow* aParent, const wxString& aTitle, + COMPONENT_TREE_SEARCH_CONTAINER* aContainer, + int aDeMorganConvert ) + : DIALOG_CHOOSE_COMPONENT_BASE( aParent, wxID_ANY, aTitle ), + m_search_container( aContainer ), + m_deMorganConvert( aDeMorganConvert >= 0 ? aDeMorganConvert : 0 ), + m_external_browser_requested( false ), + m_received_doubleclick_in_tree( false ) +{ + m_search_container->SetTree( m_libraryComponentTree ); + m_searchBox->SetFocus(); + m_componentDetails->SetEditable( false ); +} + + +// After this dialog is done: return the alias that has been selected, or an +// empty string if there is none. +wxString DIALOG_CHOOSE_COMPONENT::GetSelectedAliasName( int* aUnit ) const +{ + LIB_ALIAS *alias = m_search_container->GetSelectedAlias( aUnit ); + + if( alias ) + return alias->GetName(); + + return wxEmptyString; +} + + +void DIALOG_CHOOSE_COMPONENT::OnSearchBoxChange( wxCommandEvent& aEvent ) +{ + m_search_container->UpdateSearchTerm( m_searchBox->GetLineText(0) ); + updateSelection(); +} + + +void DIALOG_CHOOSE_COMPONENT::OnSearchBoxEnter( wxCommandEvent& aEvent ) +{ + EndModal( wxID_OK ); // We are done. +} + + +void DIALOG_CHOOSE_COMPONENT::selectIfValid( const wxTreeItemId& aTreeId ) +{ + if( aTreeId.IsOk() && aTreeId != m_libraryComponentTree->GetRootItem() ) + m_libraryComponentTree->SelectItem( aTreeId ); +} + + +void DIALOG_CHOOSE_COMPONENT::OnInterceptSearchBoxKey( wxKeyEvent& aKeyStroke ) +{ + // Cursor up/down and partiallyi cursor are use to do tree navigation operations. + // This is done by intercepting some navigational keystrokes that normally would go to + // the text search box (which has the focus by default). That way, we are mostly keyboard + // operable. + // (If the tree has the focus, it can handle that by itself). + const wxTreeItemId sel = m_libraryComponentTree->GetSelection(); + + switch( aKeyStroke.GetKeyCode() ) + { + case WXK_UP: + selectIfValid( GetPrevItem( *m_libraryComponentTree, sel ) ); + break; + + case WXK_DOWN: + selectIfValid( GetNextItem( *m_libraryComponentTree, sel ) ); + break; + + // The follwoing keys we can only hijack if they are not needed by the textbox itself. + + case WXK_LEFT: + if( m_searchBox->GetInsertionPoint() == 0 ) + m_libraryComponentTree->Collapse( sel ); + else + aKeyStroke.Skip(); // Use for original purpose: move cursor. + break; + + case WXK_RIGHT: + if( m_searchBox->GetInsertionPoint() >= (long) m_searchBox->GetLineText( 0 ).length() ) + m_libraryComponentTree->Expand( sel ); + else + aKeyStroke.Skip(); // Use for original purpose: move cursor. + break; + + default: + aKeyStroke.Skip(); // Any other key: pass on to search box directly. + break; + } +} + + +void DIALOG_CHOOSE_COMPONENT::OnTreeSelect( wxTreeEvent& aEvent ) +{ + updateSelection(); +} + + +void DIALOG_CHOOSE_COMPONENT::OnDoubleClickTreeSelect( wxTreeEvent& aEvent ) +{ + if( !updateSelection() ) + return; + + // Ok, got selection. We don't just end the modal dialog here, but + // wait for the MouseUp event to occur. Otherwise something (broken?) + // happens: the dialog will close and will deliver the 'MouseUp' event + // to the eeschema canvas, that will immediately place the component. + m_received_doubleclick_in_tree = true; +} + + +void DIALOG_CHOOSE_COMPONENT::OnTreeMouseUp( wxMouseEvent& aMouseEvent ) +{ + if( m_received_doubleclick_in_tree ) + EndModal( wxID_OK ); // We are done (see OnDoubleClickTreeSelect) + else + aMouseEvent.Skip(); // Let upstream handle it. +} + + +void DIALOG_CHOOSE_COMPONENT::OnStartComponentBrowser( wxMouseEvent& aEvent ) +{ + m_external_browser_requested = true; + EndModal( wxID_OK ); // We are done. +} + + +bool DIALOG_CHOOSE_COMPONENT::updateSelection() +{ + int unit = 0; + LIB_ALIAS* selection = m_search_container->GetSelectedAlias( &unit ); + + m_componentView->Refresh(); + + m_componentDetails->Clear(); + + if( selection == NULL ) + return false; + + m_componentDetails->Freeze(); + wxFont font_normal = m_componentDetails->GetFont(); + wxFont font_bold = m_componentDetails->GetFont(); + font_bold.SetWeight( wxFONTWEIGHT_BOLD ); + + wxTextAttr headline_attribute; + headline_attribute.SetFont(font_bold); + wxTextAttr text_attribute; + text_attribute.SetFont(font_normal); + + const wxString description = selection->GetDescription(); + + if( !description.empty() ) + { + m_componentDetails->SetDefaultStyle( headline_attribute ); + m_componentDetails->AppendText( _("Description\n") ); + m_componentDetails->SetDefaultStyle( text_attribute ); + m_componentDetails->AppendText( description ); + m_componentDetails->AppendText( wxT("\n\n") ); + } + + const wxString keywords = selection->GetKeyWords(); + + if( !keywords.empty() ) + { + m_componentDetails->SetDefaultStyle( headline_attribute ); + m_componentDetails->AppendText( _("Keywords\n") ); + m_componentDetails->SetDefaultStyle( text_attribute ); + m_componentDetails->AppendText( keywords ); + } + + m_componentDetails->SetInsertionPoint( 0 ); // scroll up. + m_componentDetails->Thaw(); + + return true; +} + + +void DIALOG_CHOOSE_COMPONENT::OnHandlePreviewRepaint( wxPaintEvent& aRepaintEvent ) +{ + int unit = 0; + LIB_ALIAS* selection = m_search_container->GetSelectedAlias( &unit ); + + renderPreview( selection ? selection->GetComponent() : NULL, unit ); +} + + +// Render the preview in our m_componentView. If this gets more complicated, we should +// probably have a derived class from wxPanel; but this keeps things local. +void DIALOG_CHOOSE_COMPONENT::renderPreview( LIB_COMPONENT* aComponent, int aUnit ) +{ + wxPaintDC dc( m_componentView ); + dc.SetBackground( *wxWHITE_BRUSH ); + dc.Clear(); + + if( aComponent == NULL ) + return; + + if( aUnit <= 0 ) + aUnit = 1; + + const wxSize dc_size = dc.GetSize(); + dc.SetDeviceOrigin( dc_size.x / 2, dc_size.y / 2 ); + + // Find joint bounding box for everything we are about to draw. + EDA_RECT bBox = aComponent->GetBoundingBox( aUnit, m_deMorganConvert ); + const double xscale = (double) dc_size.x / bBox.GetWidth(); + const double yscale = (double) dc_size.y / bBox.GetHeight(); + const double scale = std::min( xscale, yscale ) * 0.85; + + dc.SetUserScale( scale, scale ); + + wxPoint offset = bBox.Centre(); + NEGATE( offset.x ); + NEGATE( offset.y ); + + aComponent->Draw( NULL, &dc, offset, aUnit, m_deMorganConvert, GR_COPY, + UNSPECIFIED_COLOR, DefaultTransform, true, true, false ); +} + + +static wxTreeItemId GetPrevItem( const wxTreeCtrl& tree, const wxTreeItemId& item ) +{ + wxTreeItemId prevItem = tree.GetPrevSibling( item ); + + if( !prevItem.IsOk() ) + { + prevItem = tree.GetItemParent( item ); + } + else if( tree.IsExpanded( prevItem ) ) + { + prevItem = tree.GetLastChild( prevItem ); + } + + return prevItem; +} + + +static wxTreeItemId GetNextItem( const wxTreeCtrl& tree, const wxTreeItemId& item ) +{ + wxTreeItemId nextItem; + + if( tree.IsExpanded( item ) ) + { + wxTreeItemIdValue dummy; + nextItem = tree.GetFirstChild( item, dummy ); + } + else + { + // Walk up levels until we find one that has a next sibling. + for ( wxTreeItemId walk = item; walk.IsOk(); walk = tree.GetItemParent( walk ) ) + { + nextItem = tree.GetNextSibling( walk ); + if( nextItem.IsOk() ) + break; + } + } + + return nextItem; +} diff --git a/eeschema/dialogs/dialog_choose_component.h b/eeschema/dialogs/dialog_choose_component.h new file mode 100644 index 0000000000..b2e3a0903f --- /dev/null +++ b/eeschema/dialogs/dialog_choose_component.h @@ -0,0 +1,77 @@ +/* -*- c++ -*- + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2014 Henner Zeller + * Copyright (C) 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 + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, you may find one here: + * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * or you may search the http://www.gnu.org website for the version 2 license, + * or you may write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ +#ifndef DIALOG_CHOOSE_COMPONENT_H +#define DIALOG_CHOOSE_COMPONENT_H + +#include + +class COMPONENT_TREE_SEARCH_CONTAINER; +class LIB_COMPONENT; +class wxTreeItemId; + +class DIALOG_CHOOSE_COMPONENT : public DIALOG_CHOOSE_COMPONENT_BASE +{ +public: + DIALOG_CHOOSE_COMPONENT( wxWindow* aParent, const wxString& aTitle, + COMPONENT_TREE_SEARCH_CONTAINER* aSearch_container, + int aDeMorganConvert ); + + /** Function GetSelectedAliasName + * To be called after this dialog returns from ShowModal(). + * + * @param aUnit if not NULL, the selected unit is filled in here. + * @return the alias that has been selected, or an empty string if there is none. + */ + wxString GetSelectedAliasName( int* aUnit ) const; + + /** Function IsExternalBrowserSelected + * + * @return true, iff the browser pressed the browsing button. + */ + bool IsExternalBrowserSelected() const { return m_external_browser_requested; } + +protected: + virtual void OnSearchBoxChange( wxCommandEvent& aEvent ); + virtual void OnSearchBoxEnter( wxCommandEvent& aEvent ); + virtual void OnInterceptSearchBoxKey( wxKeyEvent& aEvent ); + + virtual void OnTreeSelect( wxTreeEvent& aEvent ); + virtual void OnDoubleClickTreeSelect( wxTreeEvent& aEvent ); + virtual void OnTreeMouseUp( wxMouseEvent& aMouseEvent ); + + virtual void OnStartComponentBrowser( wxMouseEvent& aEvent ); + virtual void OnHandlePreviewRepaint( wxPaintEvent& aRepaintEvent ); + +private: + bool updateSelection(); + void selectIfValid( const wxTreeItemId& aTreeId ); + void renderPreview( LIB_COMPONENT* aComponent, int aUnit ); + + COMPONENT_TREE_SEARCH_CONTAINER* const m_search_container; + const int m_deMorganConvert; + bool m_external_browser_requested; + bool m_received_doubleclick_in_tree; +}; + +#endif /* DIALOG_CHOOSE_COMPONENT_H */ diff --git a/eeschema/dialogs/dialog_choose_component_base.cpp b/eeschema/dialogs/dialog_choose_component_base.cpp new file mode 100644 index 0000000000..af6b6546f2 --- /dev/null +++ b/eeschema/dialogs/dialog_choose_component_base.cpp @@ -0,0 +1,97 @@ +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version Nov 6 2013) +// http://www.wxformbuilder.org/ +// +// PLEASE DO "NOT" EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#include "dialog_choose_component_base.h" + +/////////////////////////////////////////////////////////////////////////// + +DIALOG_CHOOSE_COMPONENT_BASE::DIALOG_CHOOSE_COMPONENT_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxSize( 450,100 ), wxDefaultSize ); + + wxBoxSizer* bSizer1; + bSizer1 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSearchSizer; + bSearchSizer = new wxBoxSizer( wxHORIZONTAL ); + + m_searchLabel = new wxStaticText( this, wxID_ANY, wxT("Search"), wxDefaultPosition, wxDefaultSize, 0 ); + m_searchLabel->Wrap( -1 ); + bSearchSizer->Add( m_searchLabel, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_searchBox = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); + bSearchSizer->Add( m_searchBox, 1, wxALL, 5 ); + + + bSizer1->Add( bSearchSizer, 0, wxEXPAND, 5 ); + + m_libraryComponentTree = new wxTreeCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTR_DEFAULT_STYLE|wxTR_HIDE_ROOT ); + m_libraryComponentTree->SetMinSize( wxSize( -1,50 ) ); + + bSizer1->Add( m_libraryComponentTree, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer3; + bSizer3 = new wxBoxSizer( wxHORIZONTAL ); + + m_componentView = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE|wxSUNKEN_BORDER ); + m_componentView->SetMinSize( wxSize( 150,150 ) ); + + bSizer3->Add( m_componentView, 4, wxEXPAND | wxALL, 5 ); + + m_componentDetails = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), wxTE_MULTILINE ); + m_componentDetails->SetMinSize( wxSize( -1,100 ) ); + + bSizer3->Add( m_componentDetails, 3, wxALL|wxEXPAND, 5 ); + + + bSizer1->Add( bSizer3, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer5; + bSizer5 = new wxBoxSizer( wxVERTICAL ); + + m_button = new wxStdDialogButtonSizer(); + m_buttonOK = new wxButton( this, wxID_OK ); + m_button->AddButton( m_buttonOK ); + m_buttonCancel = new wxButton( this, wxID_CANCEL ); + m_button->AddButton( m_buttonCancel ); + m_button->Realize(); + + bSizer5->Add( m_button, 0, wxALL|wxEXPAND, 5 ); + + + bSizer1->Add( bSizer5, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer1 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + m_searchBox->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnInterceptSearchBoxKey ), NULL, this ); + m_searchBox->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnSearchBoxChange ), NULL, this ); + m_searchBox->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnSearchBoxEnter ), NULL, this ); + m_libraryComponentTree->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnTreeMouseUp ), NULL, this ); + m_libraryComponentTree->Connect( wxEVT_COMMAND_TREE_ITEM_ACTIVATED, wxTreeEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnDoubleClickTreeSelect ), NULL, this ); + m_libraryComponentTree->Connect( wxEVT_COMMAND_TREE_SEL_CHANGED, wxTreeEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnTreeSelect ), NULL, this ); + m_componentView->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnStartComponentBrowser ), NULL, this ); + m_componentView->Connect( wxEVT_PAINT, wxPaintEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnHandlePreviewRepaint ), NULL, this ); +} + +DIALOG_CHOOSE_COMPONENT_BASE::~DIALOG_CHOOSE_COMPONENT_BASE() +{ + // Disconnect Events + m_searchBox->Disconnect( wxEVT_KEY_DOWN, wxKeyEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnInterceptSearchBoxKey ), NULL, this ); + m_searchBox->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnSearchBoxChange ), NULL, this ); + m_searchBox->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnSearchBoxEnter ), NULL, this ); + m_libraryComponentTree->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnTreeMouseUp ), NULL, this ); + m_libraryComponentTree->Disconnect( wxEVT_COMMAND_TREE_ITEM_ACTIVATED, wxTreeEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnDoubleClickTreeSelect ), NULL, this ); + m_libraryComponentTree->Disconnect( wxEVT_COMMAND_TREE_SEL_CHANGED, wxTreeEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnTreeSelect ), NULL, this ); + m_componentView->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnStartComponentBrowser ), NULL, this ); + m_componentView->Disconnect( wxEVT_PAINT, wxPaintEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnHandlePreviewRepaint ), NULL, this ); + +} diff --git a/eeschema/dialogs/dialog_choose_component_base.fbp b/eeschema/dialogs/dialog_choose_component_base.fbp new file mode 100644 index 0000000000..ee169c8e0c --- /dev/null +++ b/eeschema/dialogs/dialog_choose_component_base.fbp @@ -0,0 +1,605 @@ + + + + + + C++ + 1 + source_name + 0 + 0 + res + UTF-8 + connect + dialog_choose_component_base + 1000 + none + 0 + dialog_choose_component_base + + . + + 1 + 1 + 1 + 1 + UI + 0 + 0 + + 0 + wxAUI_MGR_DEFAULT + + wxBOTH + + 1 + 1 + impl_virtual + + + + 0 + wxID_ANY + + 450,100 + DIALOG_CHOOSE_COMPONENT_BASE + + 450,500 + wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER + DIALOG_SHIM; dialog_shim.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bSizer1 + wxVERTICAL + none + + 5 + wxEXPAND + 0 + + + bSearchSizer + wxHORIZONTAL + none + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Search + + 0 + + + 0 + + 1 + m_searchLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + -1,-1 + + + 0 + + 1 + m_searchBox + 1 + + + protected + 1 + + Resizable + 1 + + wxTE_PROCESS_ENTER + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + OnInterceptSearchBoxKey + + + + + + + + + + + + + + + + + + + OnSearchBoxChange + OnSearchBoxEnter + + + + + + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + -1,50 + 1 + m_libraryComponentTree + 1 + + + protected + 1 + + Resizable + 1 + + wxTR_DEFAULT_STYLE|wxTR_HIDE_ROOT + + 0 + + + + + + + + + + + + + + OnTreeMouseUp + + + + + + + + + + + + + + + + + + + + OnDoubleClickTreeSelect + + + + + + + + + + OnTreeSelect + + + + + + + + 5 + wxEXPAND + 1 + + + bSizer3 + wxHORIZONTAL + none + + 5 + wxEXPAND | wxALL + 4 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + 150,150 + 1 + m_componentView + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxFULL_REPAINT_ON_RESIZE|wxSUNKEN_BORDER + + + + + + + + + + OnStartComponentBrowser + + + + + + + OnHandlePreviewRepaint + + + + + + + + + + 5 + wxALL|wxEXPAND + 3 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + + 0 + -1,100 + 1 + m_componentDetails + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + wxTE_MULTILINE + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_RIGHT + 0 + + + bSizer5 + wxVERTICAL + none + + 5 + wxALL|wxEXPAND + 0 + + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + + m_button + protected + + + + + + + + + + + + + + + + diff --git a/eeschema/dialogs/dialog_choose_component_base.h b/eeschema/dialogs/dialog_choose_component_base.h new file mode 100644 index 0000000000..ad588da058 --- /dev/null +++ b/eeschema/dialogs/dialog_choose_component_base.h @@ -0,0 +1,67 @@ +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version Nov 6 2013) +// http://www.wxformbuilder.org/ +// +// PLEASE DO "NOT" EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#ifndef __DIALOG_CHOOSE_COMPONENT_BASE_H__ +#define __DIALOG_CHOOSE_COMPONENT_BASE_H__ + +#include +#include +class DIALOG_SHIM; + +#include "dialog_shim.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + + +/////////////////////////////////////////////////////////////////////////////// +/// Class DIALOG_CHOOSE_COMPONENT_BASE +/////////////////////////////////////////////////////////////////////////////// +class DIALOG_CHOOSE_COMPONENT_BASE : public DIALOG_SHIM +{ + private: + + protected: + wxStaticText* m_searchLabel; + wxTextCtrl* m_searchBox; + wxTreeCtrl* m_libraryComponentTree; + wxPanel* m_componentView; + wxTextCtrl* m_componentDetails; + wxStdDialogButtonSizer* m_button; + wxButton* m_buttonOK; + wxButton* m_buttonCancel; + + // Virtual event handlers, overide them in your derived class + virtual void OnInterceptSearchBoxKey( wxKeyEvent& event ) { event.Skip(); } + virtual void OnSearchBoxChange( wxCommandEvent& event ) { event.Skip(); } + virtual void OnSearchBoxEnter( wxCommandEvent& event ) { event.Skip(); } + virtual void OnTreeMouseUp( wxMouseEvent& event ) { event.Skip(); } + virtual void OnDoubleClickTreeSelect( wxTreeEvent& event ) { event.Skip(); } + virtual void OnTreeSelect( wxTreeEvent& event ) { event.Skip(); } + virtual void OnStartComponentBrowser( wxMouseEvent& event ) { event.Skip(); } + virtual void OnHandlePreviewRepaint( wxPaintEvent& event ) { event.Skip(); } + + + public: + + DIALOG_CHOOSE_COMPONENT_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 450,500 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); + ~DIALOG_CHOOSE_COMPONENT_BASE(); + +}; + +#endif //__DIALOG_CHOOSE_COMPONENT_BASE_H__ diff --git a/eeschema/eeschema.cpp b/eeschema/eeschema.cpp index 5efa3e62c8..7b1d86cd90 100644 --- a/eeschema/eeschema.cpp +++ b/eeschema/eeschema.cpp @@ -205,7 +205,7 @@ bool EDA_APP::OnInit() // wxSetWorkingDirectory does not like empty paths wxSetWorkingDirectory( filename.GetPath() ); - if( frame->LoadOneEEProject( filename.GetFullPath(), false ) ) + if( frame->LoadOneEEProject( filename.GetFullName(), false ) ) frame->GetCanvas()->Refresh( true ); } else diff --git a/eeschema/getpart.cpp b/eeschema/getpart.cpp index a423d2ea72..e8031d3b86 100644 --- a/eeschema/getpart.cpp +++ b/eeschema/getpart.cpp @@ -45,11 +45,14 @@ #include #include +#include +#include #include #include +// TODO(hzeller): would be good if we could give a pre-selected component. wxString SCH_BASE_FRAME::SelectComponentFromLibBrowser( void ) { wxSemaphore semaphore( 0, 1 ); @@ -76,118 +79,71 @@ wxString SCH_BASE_FRAME::SelectComponentFromLibBrowser( void ) return cmpname; } - wxString SCH_BASE_FRAME::SelectComponentFromLibrary( const wxString& aLibname, wxArrayString& aHistoryList, + int& aHistoryLastUnit, bool aUseLibBrowser, int* aUnit, int* aConvert ) { - int CmpCount = 0; - LIB_COMPONENT* libEntry = NULL; - CMP_LIBRARY* currLibrary = NULL; - wxString cmpName, keys, msg; - bool allowWildSeach = true; + int cmpCount = 0; + wxString dialogTitle; + + COMPONENT_TREE_SEARCH_CONTAINER search_container; // Container doing search-as-you-type if( !aLibname.IsEmpty() ) { - currLibrary = CMP_LIBRARY::FindLibrary( aLibname ); + CMP_LIBRARY* currLibrary = CMP_LIBRARY::FindLibrary( aLibname ); if( currLibrary != NULL ) - CmpCount = currLibrary->GetCount(); + { + cmpCount = currLibrary->GetCount(); + search_container.AddLibrary( *currLibrary ); + } } else { BOOST_FOREACH( CMP_LIBRARY& lib, CMP_LIBRARY::GetLibraryList() ) { - CmpCount += lib.GetCount(); + cmpCount += lib.GetCount(); + search_container.AddLibrary( lib ); } } - // Ask for a component name or key words - msg.Printf( _( "Component selection (%d items loaded):" ), CmpCount ); + if( !aHistoryList.empty() ) + { + // This is good for a transition for experineced users: giving them a History. Ideally, + // we actually make this part even faster to access with a popup on ALT-a or something. + search_container.AddAliasList( _("-- History --"), aHistoryList, NULL ); + search_container.SetPreselectNode( aHistoryList[0], aHistoryLastUnit ); + } - DIALOG_GET_COMPONENT dlg( this, aHistoryList, msg, aUseLibBrowser ); - - if( aHistoryList.GetCount() ) - dlg.SetComponentName( aHistoryList[0] ); + const int deMorgan = aConvert ? *aConvert : 1; + dialogTitle.Printf( _( "Choose Component (%d items loaded)" ), cmpCount ); + DIALOG_CHOOSE_COMPONENT dlg( this, dialogTitle, &search_container, deMorgan ); if( dlg.ShowModal() == wxID_CANCEL ) return wxEmptyString; - if( dlg.m_GetExtraFunction ) + wxString cmpName = dlg.GetSelectedAliasName( aUnit ); + + if( dlg.IsExternalBrowserSelected() ) { - cmpName = SelectComponentFromLibBrowser(); + cmpName = SelectComponentFromLibBrowser(); // Would be good if we could pre-select. + if( aUnit ) *aUnit = LIB_VIEW_FRAME::GetUnit(); + if( aConvert ) *aConvert = LIB_VIEW_FRAME::GetConvert(); - if( !cmpName.IsEmpty() ) - AddHistoryComponentName( aHistoryList, cmpName ); - return cmpName; - } - else - cmpName = dlg.GetComponentName(); - - if( cmpName.IsEmpty() ) - return wxEmptyString; - - // Here, cmpName contains the component name, - // or "*" if the Select All dialog button was pressed - -#ifndef KICAD_KEEPCASE - cmpName.MakeUpper(); -#endif - - if( dlg.IsKeyword() ) - { - allowWildSeach = false; - keys = cmpName; - cmpName = DataBaseGetName( this, keys, cmpName ); - - if( cmpName.IsEmpty() ) - return wxEmptyString; - } - else if( cmpName == wxT( "*" ) ) - { - allowWildSeach = false; - - if( GetNameOfPartToLoad( this, currLibrary, cmpName ) == 0 ) - return wxEmptyString; - } - else if( cmpName.Contains( wxT( "?" ) ) || cmpName.Contains( wxT( "*" ) ) ) - { - allowWildSeach = false; - cmpName = DataBaseGetName( this, keys, cmpName ); - - if( cmpName.IsEmpty() ) - return wxEmptyString; } - libEntry = CMP_LIBRARY::FindLibraryComponent( cmpName, aLibname ); - - if( !libEntry && allowWildSeach ) // Search with wildcard + if ( !cmpName.empty() ) { - allowWildSeach = false; - wxString wildname = wxChar( '*' ) + cmpName + wxChar( '*' ); - cmpName = wildname; - cmpName = DataBaseGetName( this, keys, cmpName ); - - if( !cmpName.IsEmpty() ) - libEntry = CMP_LIBRARY::FindLibraryComponent( cmpName, aLibname ); - - if( !libEntry ) - return wxEmptyString; + AddHistoryComponentName( aHistoryList, cmpName ); + if ( aUnit ) aHistoryLastUnit = *aUnit; } - if( !libEntry ) - { - msg.Printf( _( "Failed to find part <%s> in library" ), GetChars( cmpName ) ); - DisplayError( this, msg ); - return wxEmptyString; - } - - AddHistoryComponentName( aHistoryList, cmpName ); return cmpName; } @@ -195,6 +151,7 @@ wxString SCH_BASE_FRAME::SelectComponentFromLibrary( const wxString& aLibname, SCH_COMPONENT* SCH_EDIT_FRAME::Load_Component( wxDC* aDC, const wxString& aLibname, wxArrayString& aHistoryList, + int& aHistoryLastUnit, bool aUseLibBrowser ) { int unit = 1; @@ -202,8 +159,8 @@ SCH_COMPONENT* SCH_EDIT_FRAME::Load_Component( wxDC* aDC, SetRepeatItem( NULL ); m_canvas->SetIgnoreMouseEvents( true ); - wxString Name = SelectComponentFromLibrary( aLibname, aHistoryList, aUseLibBrowser, - &unit, &convert ); + wxString Name = SelectComponentFromLibrary( aLibname, aHistoryList, aHistoryLastUnit, + aUseLibBrowser, &unit, &convert ); if( Name.IsEmpty() ) { diff --git a/eeschema/help_common_strings.h b/eeschema/help_common_strings.h index 0ad221015c..c3290c6faf 100644 --- a/eeschema/help_common_strings.h +++ b/eeschema/help_common_strings.h @@ -13,55 +13,54 @@ */ // Common to schematic editor and component editor -#define HELP_UNDO _( "Undo last edition" ) -#define HELP_REDO _( "Redo the last undo command" ) +#define HELP_UNDO _( "Undo last command" ) +#define HELP_REDO _( "Redo last command" ) #define HELP_ZOOM_IN _( "Zoom in" ) #define HELP_ZOOM_OUT _( "Zoom out" ) -#define HELP_ZOOM_FIT _( "Fit the schematic sheet on the screen" ) -#define HELP_ZOOM_REDRAW _( "Redraw the schematic view" ) +#define HELP_ZOOM_FIT _( "Fit schematic sheet on screen" ) +#define HELP_ZOOM_REDRAW _( "Redraw schematic view" ) -#define HELP_DELETE_ITEMS _( "Delete items" ) +#define HELP_DELETE_ITEMS _( "Delete item" ) // Schematic editor: -#define HELP_FIND _( "Find components and texts" ) +#define HELP_FIND _( "Find components and text" ) #define HELP_REPLACE _( "Find and replace text in schematic items" ) -#define HELP_PLACE_COMPONENTS _( "Place a component" ) -#define HELP_PLACE_POWERPORT _( "Place a power port" ) -#define HELP_PLACE_WIRE _( "Place a wire" ) -#define HELP_PLACE_BUS _( "Place a bus" ) -#define HELP_PLACE_WIRE2BUS_ENTRY _( "Place a wire to bus entry" ) -#define HELP_PLACE_BUS2BUS_ENTRY _( "Place a bus to bus entry" ) -#define HELP_PLACE_NC_FLAG _( "Place a no connect flag" ) +#define HELP_PLACE_COMPONENTS _( "Place component" ) +#define HELP_PLACE_POWERPORT _( "Place power port" ) +#define HELP_PLACE_WIRE _( "Place wire" ) +#define HELP_PLACE_BUS _( "Place bus" ) +#define HELP_PLACE_WIRE2BUS_ENTRY _( "Place wire to bus entry" ) +#define HELP_PLACE_BUS2BUS_ENTRY _( "Place bus to bus entry" ) +#define HELP_PLACE_NC_FLAG _( "Place not-connected flag" ) -#define HELP_PLACE_NETLABEL _( "Place a net name (local label)" ) +#define HELP_PLACE_NETLABEL _( "Place net name - local label" ) #define HELP_PLACE_GLOBALLABEL \ _(\ - "Place a global label.\nWarning: all global labels with the same name are connected in whole hierarchy" ) + "Place global label.\nWarning: inside global hierarchy , all global labels with same name are connected" ) #define HELP_PLACE_HIER_LABEL \ - _( "Place a hierarchical label. This label will be seen as a hierarchical pin in the sheet symbol" ) + _( "Place a hierarchical label. Label will be seen as a hierarchical pin in the sheet symbol" ) -#define HELP_PLACE_JUNCTION _( "Place a junction" ) -#define HELP_PLACE_SHEET _( "Create a hierarchical sheet" ) +#define HELP_PLACE_JUNCTION _( "Place junction" ) +#define HELP_PLACE_SHEET _( "Create hierarchical sheet" ) #define HELP_IMPORT_SHEETPIN _( \ - "Place a hierarchical pin imported from the corresponding hierarchical label in sheet" ) -#define HELP_PLACE_SHEETPIN _( "Place a hierarchical pin in sheet" ) + "Place hierarchical pin imported from the corresponding hierarchical label" ) +#define HELP_PLACE_SHEETPIN _( "Place hierarchical pin in sheet" ) #define HELP_PLACE_GRAPHICLINES _( "Place graphic lines or polygons" ) -#define HELP_PLACE_GRAPHICTEXTS _( "Place graphic text (comment)" ) +#define HELP_PLACE_GRAPHICTEXTS _( "Place graphic text/comment" ) -#define HELP_ANNOTATE _( "Annotate the components in the schematic" ) -#define HELP_RUN_LIB_EDITOR _( "Library editor - Create and edit components" ) -#define HELP_RUN_LIB_VIEWER _( "Library browser - Browse components" ) +#define HELP_ANNOTATE _( "Annotate schematic components" ) +#define HELP_RUN_LIB_EDITOR _( "Library Editor - Create/edit components" ) +#define HELP_RUN_LIB_VIEWER _( "Library Browser - Browse components" ) #define HELP_GENERATE_BOM _( "Generate bill of materials and/or cross references" ) #define HELP_IMPORT_FOOTPRINTS \ - _( "Import the footprint selection from CvPcb (the .cmp file)\n\ -in component footprint fields" ) + _( "Back-import component footprint fields via CvPcb .cmp file" ) // Component editor: -#define HELP_ADD_PIN _( "Add pins to the component" ) -#define HELP_ADD_BODYTEXT _( "Add graphic texts to the component body" ) -#define HELP_ADD_BODYRECT _( "Add graphic rectangles to the component body" ) -#define HELP_ADD_BODYCIRCLE _( "Add circles to the component body" ) -#define HELP_ADD_BODYARC _( "Add arcs to the component body" ) -#define HELP_ADD_BODYPOLYGON _( "Add lines and polygons to the component body" ) -#define HELP_PLACE_GRAPHICIMAGES _("Add a bitmap image") +#define HELP_ADD_PIN _( "Add pins to component" ) +#define HELP_ADD_BODYTEXT _( "Add text to component body" ) +#define HELP_ADD_BODYRECT _( "Add graphic rectangle to component body" ) +#define HELP_ADD_BODYCIRCLE _( "Add circles to component body" ) +#define HELP_ADD_BODYARC _( "Add arcs to component body" ) +#define HELP_ADD_BODYPOLYGON _( "Add lines and polygons to component body" ) +#define HELP_PLACE_GRAPHICIMAGES _("Add bitmap image") diff --git a/eeschema/lib_arc.cpp b/eeschema/lib_arc.cpp index c4a3735f8c..a93ecae90f 100644 --- a/eeschema/lib_arc.cpp +++ b/eeschema/lib_arc.cpp @@ -447,16 +447,18 @@ void LIB_ARC::drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOf if( aColor >= 0 ) fill = NO_FILL; + EDA_RECT* const clipbox = aPanel? aPanel->GetClipBox() : NULL; + if( fill == FILLED_WITH_BG_BODYCOLOR ) { - GRFilledArc( aPanel->GetClipBox(), aDC, posc.x, posc.y, pt1, pt2, + GRFilledArc( clipbox, aDC, posc.x, posc.y, pt1, pt2, m_Radius, GetPenSize( ), (m_Flags & IS_MOVED) ? color : GetLayerColor( LAYER_DEVICE_BACKGROUND ), GetLayerColor( LAYER_DEVICE_BACKGROUND ) ); } else if( fill == FILLED_SHAPE && !aData ) { - GRFilledArc( aPanel->GetClipBox(), aDC, posc.x, posc.y, pt1, pt2, m_Radius, + GRFilledArc( clipbox, aDC, posc.x, posc.y, pt1, pt2, m_Radius, color, color ); } else @@ -464,11 +466,11 @@ void LIB_ARC::drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOf #ifdef DRAW_ARC_WITH_ANGLE - GRArc( aPanel->GetClipBox(), aDC, posc.x, posc.y, pt1, pt2, m_Radius, + GRArc( clipbox, aDC, posc.x, posc.y, pt1, pt2, m_Radius, GetPenSize(), color ); #else - GRArc1( aPanel->GetClipBox(), aDC, pos1.x, pos1.y, pos2.x, pos2.y, + GRArc1( clipbox, aDC, pos1.x, pos1.y, pos2.x, pos2.y, posc.x, posc.y, GetPenSize(), color ); #endif } @@ -477,7 +479,7 @@ void LIB_ARC::drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOf * calculation. */ #if 0 EDA_RECT bBox = GetBoundingBox(); - GRRect( aPanel->GetClipBox(), aDC, bBox.GetOrigin().x, bBox.GetOrigin().y, + GRRect( clipbox, aDC, bBox.GetOrigin().x, bBox.GetOrigin().y, bBox.GetEnd().x, bBox.GetEnd().y, 0, LIGHTMAGENTA ); #endif } diff --git a/eeschema/lib_circle.cpp b/eeschema/lib_circle.cpp index 9dadd713fe..2110f42bf8 100644 --- a/eeschema/lib_circle.cpp +++ b/eeschema/lib_circle.cpp @@ -231,20 +231,21 @@ void LIB_CIRCLE::drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& if( aColor >= 0 ) fill = NO_FILL; + EDA_RECT* const clipbox = aPanel? aPanel->GetClipBox() : NULL; if( fill == FILLED_WITH_BG_BODYCOLOR ) - GRFilledCircle( aPanel->GetClipBox(), aDC, pos1.x, pos1.y, m_Radius, GetPenSize(), + GRFilledCircle( clipbox, aDC, pos1.x, pos1.y, m_Radius, GetPenSize(), (m_Flags & IS_MOVED) ? color : GetLayerColor( LAYER_DEVICE_BACKGROUND ), GetLayerColor( LAYER_DEVICE_BACKGROUND ) ); else if( fill == FILLED_SHAPE ) - GRFilledCircle( aPanel->GetClipBox(), aDC, pos1.x, pos1.y, m_Radius, 0, color, color ); + GRFilledCircle( clipbox, aDC, pos1.x, pos1.y, m_Radius, 0, color, color ); else - GRCircle( aPanel->GetClipBox(), aDC, pos1.x, pos1.y, m_Radius, GetPenSize(), color ); + GRCircle( clipbox, aDC, pos1.x, pos1.y, m_Radius, GetPenSize(), color ); /* Set to one (1) to draw bounding box around circle to validate bounding * box calculation. */ #if 0 EDA_RECT bBox = GetBoundingBox(); - GRRect( aPanel->GetClipBox(), aDC, bBox.GetOrigin().x, bBox.GetOrigin().y, + GRRect( clipbox, aDC, bBox.GetOrigin().x, bBox.GetOrigin().y, bBox.GetEnd().x, bBox.GetEnd().y, 0, LIGHTMAGENTA ); #endif } diff --git a/eeschema/lib_polyline.cpp b/eeschema/lib_polyline.cpp index 2b3fabc71b..49aa1daf42 100644 --- a/eeschema/lib_polyline.cpp +++ b/eeschema/lib_polyline.cpp @@ -296,15 +296,16 @@ void LIB_POLYLINE::drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint GRSetDrawMode( aDC, aDrawMode ); + EDA_RECT* const clipbox = aPanel? aPanel->GetClipBox() : NULL; if( fill == FILLED_WITH_BG_BODYCOLOR ) - GRPoly( aPanel->GetClipBox(), aDC, m_PolyPoints.size(), buffer, 1, GetPenSize(), + GRPoly( clipbox, aDC, m_PolyPoints.size(), buffer, 1, GetPenSize(), (m_Flags & IS_MOVED) ? color : GetLayerColor( LAYER_DEVICE_BACKGROUND ), GetLayerColor( LAYER_DEVICE_BACKGROUND ) ); else if( fill == FILLED_SHAPE ) - GRPoly( aPanel->GetClipBox(), aDC, m_PolyPoints.size(), buffer, 1, GetPenSize(), + GRPoly( clipbox, aDC, m_PolyPoints.size(), buffer, 1, GetPenSize(), color, color ); else - GRPoly( aPanel->GetClipBox(), aDC, m_PolyPoints.size(), buffer, 0, GetPenSize(), + GRPoly( clipbox, aDC, m_PolyPoints.size(), buffer, 0, GetPenSize(), color, color ); delete[] buffer; @@ -314,7 +315,7 @@ void LIB_POLYLINE::drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint #if 0 EDA_RECT bBox = GetBoundingBox(); bBox.Inflate( m_Thickness + 1, m_Thickness + 1 ); - GRRect( aPanel->GetClipBox(), aDC, bBox.GetOrigin().x, bBox.GetOrigin().y, + GRRect( clipbox, aDC, bBox.GetOrigin().x, bBox.GetOrigin().y, bBox.GetEnd().x, bBox.GetEnd().y, 0, LIGHTMAGENTA ); #endif } diff --git a/eeschema/lib_rectangle.cpp b/eeschema/lib_rectangle.cpp index 42c7a1b395..4ba9ab959e 100644 --- a/eeschema/lib_rectangle.cpp +++ b/eeschema/lib_rectangle.cpp @@ -222,22 +222,23 @@ void LIB_RECTANGLE::drawGraphic( EDA_DRAW_PANEL* aPanel, wxDC* aDC, GRSetDrawMode( aDC, aDrawMode ); + EDA_RECT* const clipbox = aPanel? aPanel->GetClipBox() : NULL; if( fill == FILLED_WITH_BG_BODYCOLOR && !aData ) - GRFilledRect( aPanel->GetClipBox(), aDC, pos1.x, pos1.y, pos2.x, pos2.y, GetPenSize( ), + GRFilledRect( clipbox, aDC, pos1.x, pos1.y, pos2.x, pos2.y, GetPenSize( ), (m_Flags & IS_MOVED) ? color : GetLayerColor( LAYER_DEVICE_BACKGROUND ), GetLayerColor( LAYER_DEVICE_BACKGROUND ) ); else if( m_Fill == FILLED_SHAPE && !aData ) - GRFilledRect( aPanel->GetClipBox(), aDC, pos1.x, pos1.y, pos2.x, pos2.y, + GRFilledRect( clipbox, aDC, pos1.x, pos1.y, pos2.x, pos2.y, GetPenSize(), color, color ); else - GRRect( aPanel->GetClipBox(), aDC, pos1.x, pos1.y, pos2.x, pos2.y, GetPenSize(), color ); + GRRect( clipbox, aDC, pos1.x, pos1.y, pos2.x, pos2.y, GetPenSize(), color ); /* Set to one (1) to draw bounding box around rectangle to validate * bounding box calculation. */ #if 0 EDA_RECT bBox = GetBoundingBox(); bBox.Inflate( m_Thickness + 1, m_Thickness + 1 ); - GRRect( aPanel->GetClipBox(), aDC, bBox.GetOrigin().x, bBox.GetOrigin().y, + GRRect( clipbox, aDC, bBox.GetOrigin().x, bBox.GetOrigin().y, bBox.GetEnd().x, bBox.GetEnd().y, 0, LIGHTMAGENTA ); #endif } diff --git a/eeschema/libedit.cpp b/eeschema/libedit.cpp index e5f3b6511d..9236467b6d 100644 --- a/eeschema/libedit.cpp +++ b/eeschema/libedit.cpp @@ -131,8 +131,10 @@ void LIB_EDIT_FRAME::LoadOneLibraryPart( wxCommandEvent& event ) return; } - wxArrayString historyList; - CmpName = SelectComponentFromLibrary( m_library->GetName(), historyList, true, NULL, NULL ); + wxArrayString dummyHistoryList; + int dummyLastUnit; + CmpName = SelectComponentFromLibrary( m_library->GetName(), dummyHistoryList, dummyLastUnit, + true, NULL, NULL ); if( CmpName.IsEmpty() ) return; 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/menubar.cpp b/eeschema/menubar.cpp index 32d93a5c35..412d8b27d0 100644 --- a/eeschema/menubar.cpp +++ b/eeschema/menubar.cpp @@ -1,9 +1,9 @@ /* * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 2007 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com - * Copyright (C) 2009-2011 Wayne Stambaugh - * Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2014 Jean-Pierre Charras, jp.charras at wanadoo.fr + * Copyright (C) 2009-2014 Wayne Stambaugh + * Copyright (C) 1992-2014 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -27,9 +27,6 @@ * @file eeschema/menubar.cpp * @brief (Re)Create the main menubar for the schematic frame */ -#ifdef __GNUG__ -#pragma implementation -#endif #include #include @@ -69,15 +66,15 @@ void SCH_EDIT_FRAME::ReCreateMenuBar() // New AddMenuItem( fileMenu, ID_NEW_PROJECT, - _( "&New" ), - _( "New schematic project" ), + _( "&New Schematic Project" ), + _( "Clear current schematic hierarchy and start a new schematic root sheet" ), KiBitmap( new_xpm ) ); // Open - text = AddHotkeyName( _( "&Open" ), s_Schematic_Hokeys_Descr, HK_LOAD_SCH ); + text = AddHotkeyName( _( "&Open Schematic Sheet" ), s_Schematic_Hokeys_Descr, HK_LOAD_SCH ); AddMenuItem( fileMenu, ID_LOAD_PROJECT, text, - _( "Open an existing schematic project" ), + _( "Open an existing schematic sheet" ), KiBitmap( open_document_xpm ) ); // Open Recent submenu @@ -98,19 +95,19 @@ void SCH_EDIT_FRAME::ReCreateMenuBar() // Import AddMenuItem( fileMenu, - ID_APPEND_PROJECT, _( "&Append Schematic" ), - _( "Append another schematic project to the current loaded schematic" ), + ID_APPEND_PROJECT, _( "&Append Schematic Sheet" ), + _( "Append schematic sheet to current project" ), KiBitmap( open_document_xpm ) ); // Separator fileMenu->AppendSeparator(); // Save schematic project - text = AddHotkeyName( _( "&Save Whole Schematic Project" ), + text = AddHotkeyName( _( "&Save Schematic Project" ), s_Schematic_Hokeys_Descr, HK_SAVE_SCH ); AddMenuItem( fileMenu, ID_SAVE_PROJECT, text, - _( "Save all sheets in the schematic project" ), + _( "Save all sheets in schematic project" ), KiBitmap( save_project_xpm ) ); // Save current sheet @@ -134,14 +131,14 @@ void SCH_EDIT_FRAME::ReCreateMenuBar() AddMenuItem( fileMenu, ID_SHEET_SET, _( "Pa&ge Settings" ), - _( "Settigns for page size and information" ), + _( "Setting for sheet size and frame references" ), KiBitmap( sheetset_xpm ) ); // Print AddMenuItem( fileMenu, wxID_PRINT, _( "Pri&nt" ), - _( "Print schematic" ), + _( "Print schematic sheet" ), KiBitmap( print_button_xpm ) ); #ifdef __WINDOWS__ // __WINDOWS__ @@ -262,8 +259,8 @@ void SCH_EDIT_FRAME::ReCreateMenuBar() // Hierarchy AddMenuItem( viewMenu, ID_HIERARCHY, - _( "&Hierarchy" ), - _( "Navigate schematic hierarchy" ), + _( "Show &Hierarchical Navigator" ), + _( "Navigate hierarchical sheets" ), KiBitmap( hierarchy_nav_xpm ) ); // Redraw @@ -402,15 +399,15 @@ void SCH_EDIT_FRAME::ReCreateMenuBar() // Library AddMenuItem( preferencesMenu, ID_CONFIG_REQ, - _( "&Library" ), - _( "Library preferences" ), + _( "Set &Library Path" ), + _( "Set library preferences" ), KiBitmap( library_xpm ) ); // Colors AddMenuItem( preferencesMenu, ID_COLORS_SETUP, - _( "&Colors" ), - _( "Color preferences" ), + _( "Set &Colors Scheme" ), + _( "Set color preferences" ), KiBitmap( palette_xpm ) ); // Options (Preferences on WXMAC) @@ -420,8 +417,8 @@ void SCH_EDIT_FRAME::ReCreateMenuBar() #else AddMenuItem( preferencesMenu, wxID_PREFERENCES, - _( "&Options" ), - _( "Eeschema preferences" ), + _( "Schematic Editor &Options" ), + _( "Set Eeschema preferences" ), KiBitmap( preference_xpm ) ); #endif // __WXMAC__ @@ -470,21 +467,21 @@ void SCH_EDIT_FRAME::ReCreateMenuBar() // Annotate AddMenuItem( toolsMenu, ID_GET_ANNOTATE, - _( "&Annotate" ), HELP_ANNOTATE, + _( "&Annotate Schematic" ), HELP_ANNOTATE, KiBitmap( annotate_xpm ) ); // ERC AddMenuItem( toolsMenu, ID_GET_ERC, - _( "ER&C" ), + _( "Electric Rules &Checker" ), _( "Perform electrical rule check" ), KiBitmap( erc_xpm ) ); // Generate netlist AddMenuItem( toolsMenu, ID_GET_NETLIST, - _( "Generate &Netlist" ), - _( "Generate the component netlist" ), + _( "Generate &Netlist File" ), + _( "Generate the component netlist file" ), KiBitmap( netlist_xpm ) ); // Generate bill of materials @@ -520,14 +517,14 @@ void SCH_EDIT_FRAME::ReCreateMenuBar() // Contents AddMenuItem( helpMenu, wxID_HELP, - _( "&Contents" ), - _( "Open the Eeschema handbook" ), + _( "Eesc&hema Manual" ), + _( "Open Eeschema manual" ), KiBitmap( online_help_xpm ) ); AddMenuItem( helpMenu, wxID_INDEX, _( "&Getting Started in KiCad" ), - _( "Open the \"Getting Started in KiCad\" guide for beginners" ), + _( "Open \"Getting Started in KiCad\" guide for beginners" ), KiBitmap( help_xpm ) ); // About Eeschema diff --git a/eeschema/onleftclick.cpp b/eeschema/onleftclick.cpp index 9bf9dcea0e..8a5a6adcaa 100644 --- a/eeschema/onleftclick.cpp +++ b/eeschema/onleftclick.cpp @@ -46,8 +46,13 @@ #include +// TODO(hzeller): These pairs of elmenets should be represented by an object, but don't want +// to refactor too much right now to not get in the way with other code changes. static wxArrayString s_CmpNameList; +static int s_CmpLastUnit; + static wxArrayString s_PowerNameList; +static int s_LastPowerUnit; void SCH_EDIT_FRAME::OnLeftClick( wxDC* aDC, const wxPoint& aPosition ) @@ -294,7 +299,8 @@ void SCH_EDIT_FRAME::OnLeftClick( wxDC* aDC, const wxPoint& aPosition ) case ID_SCH_PLACE_COMPONENT: if( (item == NULL) || (item->GetFlags() == 0) ) { - GetScreen()->SetCurItem( Load_Component( aDC, wxEmptyString, s_CmpNameList, true ) ); + GetScreen()->SetCurItem( Load_Component( aDC, wxEmptyString, + s_CmpNameList, s_CmpLastUnit, true ) ); m_canvas->SetAutoPanRequest( true ); } else @@ -307,7 +313,7 @@ void SCH_EDIT_FRAME::OnLeftClick( wxDC* aDC, const wxPoint& aPosition ) if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { GetScreen()->SetCurItem( Load_Component( aDC, wxT( "power" ), - s_PowerNameList, false ) ); + s_PowerNameList, s_LastPowerUnit, false ) ); m_canvas->SetAutoPanRequest( true ); } else 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/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..9bcf60ed0b 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..15e021fab1 100644 --- a/eeschema/schframe.cpp +++ b/eeschema/schframe.cpp @@ -173,6 +173,7 @@ END_EVENT_TABLE() #define SCH_EDIT_FRAME_NAME wxT( "SchematicFrame" ) + SCH_EDIT_FRAME::SCH_EDIT_FRAME( wxWindow* aParent, const wxString& aTitle, const wxPoint& aPosition, const wxSize& aSize, long aStyle ) : @@ -534,12 +535,6 @@ double SCH_EDIT_FRAME::BestZoom() } -/* Build a filename that can be used in plot and print functions - * for the current sheet path. - * This filename is unique and must be used instead of the screen filename - * when one must creates file for each sheet in the hierarchy, - * because in complex hierarchies a sheet and a SCH_SCREEN is used more than once - */ wxString SCH_EDIT_FRAME::GetUniqueFilenameForCurrentSheet() { wxFileName fn = GetScreen()->GetFileName(); @@ -582,11 +577,6 @@ void SCH_EDIT_FRAME::OnModify() } -/***************************************************************************** -* Enable or disable menu entry and toolbar buttons according to current -* conditions. -*****************************************************************************/ - void SCH_EDIT_FRAME::OnUpdateBlockSelected( wxUpdateUIEvent& event ) { bool enable = ( GetScreen() && GetScreen()->m_BlockLocate.GetCommand() == BLOCK_MOVE ); @@ -782,9 +772,11 @@ void SCH_EDIT_FRAME::OnOpenCvpcb( wxCommandEvent& event ) } } + void SCH_EDIT_FRAME::OnOpenLibraryEditor( wxCommandEvent& event ) { SCH_COMPONENT* component = NULL; + if( event.GetId() == ID_POPUP_SCH_CALL_LIBEDIT_AND_LOAD_CMP ) { SCH_ITEM* item = GetScreen()->GetCurItem(); @@ -861,6 +853,7 @@ void SCH_EDIT_FRAME::OnPrint( wxCommandEvent& event ) } } + void SCH_EDIT_FRAME::PrintPage( wxDC* aDC, LAYER_MSK aPrintMask, bool aPrintMirrorMode, void* aData ) { @@ -973,6 +966,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 ); @@ -989,13 +986,7 @@ void SCH_EDIT_FRAME::addCurrentItemToList( wxDC* aDC ) } } -/* sets the main window title bar text. - * If file name defined by SCH_SCREEN::m_FileName is not set, the title is set to the - * application name appended with no file. - * Otherwise, the title is set to the hierarchical sheet path and the full file name, - * and read only is appended to the title if the user does not have write - * access to the file. - */ + void SCH_EDIT_FRAME::UpdateTitle() { wxString title; 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/appl_wxstruct.h b/include/appl_wxstruct.h index e58dd4f6be..afb2b91ed8 100644 --- a/include/appl_wxstruct.h +++ b/include/appl_wxstruct.h @@ -97,6 +97,9 @@ protected: /// The file name of the the program selected for browsing pdf files. wxString m_PdfBrowser; + /// true to use the selected PDF browser, if exists, or false to use the default + bool m_useSystemPdfBrowser; + wxPathList m_searchPaths; wxFileHistory m_fileHistory; wxString m_HelpFileName; @@ -150,11 +153,29 @@ public: wxLocale* GetLocale() { return m_Locale; } + /** + * @return the full file name of the prefered PDF browser + * ( the file name is empty if no prefered there is no PDF browser selected + */ wxString GetPdfBrowserFileName() const { return m_PdfBrowser; } + /** + * Set the name of a prefered PDF browser, which could be an alternate browser + * to the system PDF browser. + */ void SetPdfBrowserFileName( const wxString& aFileName ) { m_PdfBrowser = aFileName; } - bool UseSystemPdfBrowser() const { return m_PdfBrowser.IsEmpty(); } + /** + * @return true if the PDF browser is the default (system) PDF browser + * and false if the PDF browser is the prefered (selected) browser + * returns false if there is no selected browser + */ + bool UseSystemPdfBrowser() const { return m_useSystemPdfBrowser || m_PdfBrowser.IsEmpty(); } + + /** + * force the use of system PDF browser, even if a preferend PDF browser is set + */ + void ForceSystemPdfBrowser( bool aFlg ) { m_useSystemPdfBrowser = aFlg; } wxFileHistory& GetFileHistory() { return m_fileHistory; } @@ -435,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/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 ); } diff --git a/include/bitmaps.h b/include/bitmaps.h index 8714a297d7..ae049aa719 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 ) @@ -411,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/include/class_board_design_settings.h b/include/class_board_design_settings.h index 9b516308b2..a651e982fc 100644 --- a/include/class_board_design_settings.h +++ b/include/class_board_design_settings.h @@ -119,23 +119,25 @@ public: * Function IsElementVisible * tests whether a given element category is visible. Keep this as an * inline function. - * @param aPCB_VISIBLE is from the enum by the same name + * @param aElementCategory is from the enum by the same name * @return bool - true if the element is visible. * @see enum PCB_VISIBLE */ - bool IsElementVisible( int aPCB_VISIBLE ) const + bool IsElementVisible( int aElementCategory ) const { - return bool( m_VisibleElements & (1 << aPCB_VISIBLE) ); + assert( aElementCategory >= 0 && aElementCategory < END_PCB_VISIBLE_LIST ); + + return ( m_VisibleElements & ( 1 << aElementCategory ) ); } /** * Function SetElementVisibility * changes the visibility of an element category - * @param aPCB_VISIBLE is from the enum by the same name + * @param aElementCategory is from the enum by the same name * @param aNewState = The new visibility state of the element category * @see enum PCB_VISIBLE */ - void SetElementVisibility( int aPCB_VISIBLE, bool aNewState ); + void SetElementVisibility( int aElementCategory, bool aNewState ); /** * Function GetEnabledLayers diff --git a/include/gal/opengl/glm/core/_detail.hpp b/include/gal/opengl/glm/core/_detail.hpp index ecc9250ecf..e6b42c26ed 100644 --- a/include/gal/opengl/glm/core/_detail.hpp +++ b/include/gal/opengl/glm/core/_detail.hpp @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -445,7 +445,14 @@ namespace detail # define GLM_RESTRICT __declspec(restrict) # define GLM_RESTRICT_VAR __restrict # define GLM_CONSTEXPR -#elif((GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_LLVM_GCC)) && (GLM_COMPILER >= GLM_COMPILER_GCC31)) +#elif(GLM_COMPILER & GLM_COMPILER_INTEL) +# define GLM_DEPRECATED +# define GLM_ALIGN(x) __declspec(align(x)) +# define GLM_ALIGNED_STRUCT(x) __declspec(align(x)) struct +# define GLM_RESTRICT +# define GLM_RESTRICT_VAR __restrict +# define GLM_CONSTEXPR +#elif(((GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_LLVM_GCC)) && (GLM_COMPILER >= GLM_COMPILER_GCC31)) || (GLM_COMPILER & GLM_COMPILER_CLANG)) # define GLM_DEPRECATED __attribute__((__deprecated__)) # define GLM_ALIGN(x) __attribute__((aligned(x))) # define GLM_ALIGNED_STRUCT(x) struct __attribute__((aligned(x))) diff --git a/include/gal/opengl/glm/core/_fixes.hpp b/include/gal/opengl/glm/core/_fixes.hpp index 1b4dddaac7..b4cec5f259 100644 --- a/include/gal/opengl/glm/core/_fixes.hpp +++ b/include/gal/opengl/glm/core/_fixes.hpp @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights diff --git a/include/gal/opengl/glm/core/_swizzle.hpp b/include/gal/opengl/glm/core/_swizzle.hpp index e234a02719..dc069443f7 100644 --- a/include/gal/opengl/glm/core/_swizzle.hpp +++ b/include/gal/opengl/glm/core/_swizzle.hpp @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -60,8 +60,8 @@ namespace detail typedef T value_type; protected: - value_type& elem (size_t i) { return (reinterpret_cast(_buffer))[i]; } - const value_type& elem (size_t i) const { return (reinterpret_cast(_buffer))[i]; } + GLM_FUNC_QUALIFIER value_type& elem (size_t i) { return (reinterpret_cast(_buffer))[i]; } + GLM_FUNC_QUALIFIER const value_type& elem (size_t i) const { return (reinterpret_cast(_buffer))[i]; } // Use an opaque buffer to *ensure* the compiler doesn't call a constructor. // The size 1 buffer is assumed to aligned to the actual members so that the @@ -77,19 +77,19 @@ namespace detail template struct _swizzle_base1 : public _swizzle_base0 { - V operator ()() const { return V(this->elem(E0), this->elem(E1)); } + GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1)); } }; template struct _swizzle_base1 : public _swizzle_base0 { - V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2)); } + GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2)); } }; template struct _swizzle_base1 : public _swizzle_base0 { - V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); } + GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); } }; // Internal class for implementing swizzle operators @@ -110,67 +110,73 @@ namespace detail typedef VecType vec_type; typedef ValueType value_type; - _swizzle_base2& operator= (const ValueType& t) + GLM_FUNC_QUALIFIER _swizzle_base2& operator= (const ValueType& t) { for (int i = 0; i < N; ++i) (*this)[i] = t; return *this; } - _swizzle_base2& operator= (const VecType& that) + GLM_FUNC_QUALIFIER _swizzle_base2& operator= (const VecType& that) { struct op { - void operator() (value_type& e, value_type& t) { e = t; } + GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e = t; } }; _apply_op(that, op()); return *this; } - void operator -= (const VecType& that) + GLM_FUNC_QUALIFIER void operator -= (const VecType& that) { struct op { - void operator() (value_type& e, value_type& t) { e -= t; } + GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e -= t; } }; _apply_op(that, op()); } - void operator += (const VecType& that) + GLM_FUNC_QUALIFIER void operator += (const VecType& that) { struct op { - void operator() (value_type& e, value_type& t) { e += t; } + GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e += t; } }; _apply_op(that, op()); } - void operator *= (const VecType& that) + GLM_FUNC_QUALIFIER void operator *= (const VecType& that) { struct op { - void operator() (value_type& e, value_type& t) { e *= t; } + GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e *= t; } }; _apply_op(that, op()); } - void operator /= (const VecType& that) + GLM_FUNC_QUALIFIER void operator /= (const VecType& that) { struct op { - void operator() (value_type& e, value_type& t) { e /= t; } + GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e /= t; } }; _apply_op(that, op()); } - value_type& operator[] (size_t i) + GLM_FUNC_QUALIFIER value_type& operator[] (size_t i) { - static const int offset_dst[4] = { E0, E1, E2, E3 }; +#ifndef __CUDA_ARCH__ + static +#endif + const int offset_dst[4] = { E0, E1, E2, E3 }; return this->elem(offset_dst[i]); } - value_type operator[] (size_t i) const + GLM_FUNC_QUALIFIER value_type operator[] (size_t i) const { - static const int offset_dst[4] = { E0, E1, E2, E3 }; +#ifndef __CUDA_ARCH__ + static +#endif + const int offset_dst[4] = { E0, E1, E2, E3 }; return this->elem(offset_dst[i]); } protected: template - void _apply_op(const VecType& that, T op) + GLM_FUNC_QUALIFIER void _apply_op(const VecType& that, T op) { // Make a copy of the data in this == &that. // The copier should optimize out the copy in cases where the function is @@ -191,11 +197,14 @@ namespace detail typedef ValueType value_type; struct Stub {}; - _swizzle_base2& operator= (Stub const &) {} + GLM_FUNC_QUALIFIER _swizzle_base2& operator= (Stub const &) { return *this; } - value_type operator[] (size_t i) const + GLM_FUNC_QUALIFIER value_type operator[] (size_t i) const { - static const int offset_dst[4] = { E0, E1, E2, E3 }; +#ifndef __CUDA_ARCH__ + static +#endif + const int offset_dst[4] = { E0, E1, E2, E3 }; return this->elem(offset_dst[i]); } }; @@ -207,7 +216,7 @@ namespace detail using base_type::operator=; - operator VecType () const { return (*this)(); } + GLM_FUNC_QUALIFIER operator VecType () const { return (*this)(); } }; // @@ -223,17 +232,17 @@ namespace detail // #define _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \ _GLM_SWIZZLE_TEMPLATE2 \ - V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \ + GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \ { \ return a() OPERAND b(); \ } \ _GLM_SWIZZLE_TEMPLATE1 \ - V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const V& b) \ + GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const V& b) \ { \ return a() OPERAND b; \ } \ _GLM_SWIZZLE_TEMPLATE1 \ - V operator OPERAND ( const V& a, const _GLM_SWIZZLE_TYPE1& b) \ + GLM_FUNC_QUALIFIER V operator OPERAND ( const V& a, const _GLM_SWIZZLE_TYPE1& b) \ { \ return a OPERAND b(); \ } @@ -243,12 +252,12 @@ namespace detail // #define _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \ _GLM_SWIZZLE_TEMPLATE1 \ - V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const T& b) \ + GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const T& b) \ { \ return a() OPERAND b; \ } \ _GLM_SWIZZLE_TEMPLATE1 \ - V operator OPERAND ( const T& a, const _GLM_SWIZZLE_TYPE1& b) \ + GLM_FUNC_QUALIFIER V operator OPERAND ( const T& a, const _GLM_SWIZZLE_TYPE1& b) \ { \ return a OPERAND b(); \ } @@ -258,7 +267,7 @@ namespace detail // #define _GLM_SWIZZLE_FUNCTION_1_ARGS(RETURN_TYPE,FUNCTION) \ _GLM_SWIZZLE_TEMPLATE1 \ - typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a) \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a) \ { \ return FUNCTION(a()); \ } @@ -268,22 +277,22 @@ namespace detail // #define _GLM_SWIZZLE_FUNCTION_2_ARGS(RETURN_TYPE,FUNCTION) \ _GLM_SWIZZLE_TEMPLATE2 \ - typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \ { \ return FUNCTION(a(), b()); \ } \ _GLM_SWIZZLE_TEMPLATE1 \ - typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b) \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b) \ { \ return FUNCTION(a(), b()); \ } \ _GLM_SWIZZLE_TEMPLATE1 \ - typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename V& b) \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename V& b) \ { \ return FUNCTION(a(), b); \ } \ _GLM_SWIZZLE_TEMPLATE1 \ - typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V& a, const _GLM_SWIZZLE_TYPE1& b) \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V& a, const _GLM_SWIZZLE_TYPE1& b) \ { \ return FUNCTION(a, b()); \ } @@ -293,22 +302,22 @@ namespace detail // #define _GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(RETURN_TYPE,FUNCTION) \ _GLM_SWIZZLE_TEMPLATE2 \ - typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b, const T& c) \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b, const T& c) \ { \ return FUNCTION(a(), b(), c); \ } \ _GLM_SWIZZLE_TEMPLATE1 \ - typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \ { \ return FUNCTION(a(), b(), c); \ } \ _GLM_SWIZZLE_TEMPLATE1 \ - typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename S0::vec_type& b, const T& c)\ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename S0::vec_type& b, const T& c)\ { \ return FUNCTION(a(), b, c); \ } \ _GLM_SWIZZLE_TEMPLATE1 \ - typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \ { \ return FUNCTION(a, b(), c); \ } @@ -640,6 +649,22 @@ namespace glm struct { glm::detail::swizzle<4,T,P,0,2,3,1> E0 ## E2 ## E3 ## E1; }; \ struct { glm::detail::swizzle<4,T,P,0,2,3,2> E0 ## E2 ## E3 ## E2; }; \ struct { glm::detail::swizzle<4,T,P,0,2,3,3> E0 ## E2 ## E3 ## E3; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,0,0> E0 ## E3 ## E0 ## E0; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,0,1> E0 ## E3 ## E0 ## E1; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,0,2> E0 ## E3 ## E0 ## E2; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,0,3> E0 ## E3 ## E0 ## E3; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,1,0> E0 ## E3 ## E1 ## E0; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,1,1> E0 ## E3 ## E1 ## E1; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,1,2> E0 ## E3 ## E1 ## E2; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,1,3> E0 ## E3 ## E1 ## E3; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,2,0> E0 ## E3 ## E2 ## E0; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,2,1> E0 ## E3 ## E2 ## E1; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,2,2> E0 ## E3 ## E2 ## E2; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,2,3> E0 ## E3 ## E2 ## E3; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,3,0> E0 ## E3 ## E3 ## E0; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,3,1> E0 ## E3 ## E3 ## E1; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,3,2> E0 ## E3 ## E3 ## E2; }; \ + struct { glm::detail::swizzle<4,T,P,0,3,3,3> E0 ## E3 ## E3 ## E3; }; \ struct { glm::detail::swizzle<4,T,P,1,0,0,0> E1 ## E0 ## E0 ## E0; }; \ struct { glm::detail::swizzle<4,T,P,1,0,0,1> E1 ## E0 ## E0 ## E1; }; \ struct { glm::detail::swizzle<4,T,P,1,0,0,2> E1 ## E0 ## E0 ## E2; }; \ diff --git a/include/gal/opengl/glm/core/_swizzle_func.hpp b/include/gal/opengl/glm/core/_swizzle_func.hpp index 255a3ec980..be66784373 100644 --- a/include/gal/opengl/glm/core/_swizzle_func.hpp +++ b/include/gal/opengl/glm/core/_swizzle_func.hpp @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights diff --git a/include/gal/opengl/glm/core/_vectorize.hpp b/include/gal/opengl/glm/core/_vectorize.hpp index 7e14cc17ef..9984014fa8 100644 --- a/include/gal/opengl/glm/core/_vectorize.hpp +++ b/include/gal/opengl/glm/core/_vectorize.hpp @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights diff --git a/include/gal/opengl/glm/core/dummy.cpp b/include/gal/opengl/glm/core/dummy.cpp index db03cf8970..38fcca0206 100644 --- a/include/gal/opengl/glm/core/dummy.cpp +++ b/include/gal/opengl/glm/core/dummy.cpp @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights diff --git a/include/gal/opengl/glm/core/func_common.hpp b/include/gal/opengl/glm/core/func_common.hpp index 9ed943ccf6..fcf7eb7619 100644 --- a/include/gal/opengl/glm/core/func_common.hpp +++ b/include/gal/opengl/glm/core/func_common.hpp @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -50,7 +50,7 @@ namespace glm /// @see GLSL abs man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType abs(genType const & x); + GLM_FUNC_DECL genType abs(genType const & x); /// Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0. /// @@ -59,7 +59,7 @@ namespace glm /// @see GLSL sign man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType sign(genType const & x); + GLM_FUNC_DECL genType sign(genType const & x); /// Returns a value equal to the nearest integer that is less then or equal to x. /// @@ -68,7 +68,7 @@ namespace glm /// @see GLSL floor man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType floor(genType const & x); + GLM_FUNC_DECL genType floor(genType const & x); /// Returns a value equal to the nearest integer to x /// whose absolute value is not larger than the absolute value of x. @@ -78,7 +78,7 @@ namespace glm /// @see GLSL trunc man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType trunc(genType const & x); + GLM_FUNC_DECL genType trunc(genType const & x); /// Returns a value equal to the nearest integer to x. /// The fraction 0.5 will round in a direction chosen by the @@ -91,7 +91,7 @@ namespace glm /// @see GLSL round man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType round(genType const & x); + GLM_FUNC_DECL genType round(genType const & x); /// Returns a value equal to the nearest integer to x. /// A fractional part of 0.5 will round toward the nearest even @@ -103,7 +103,7 @@ namespace glm /// @see GLSL 4.20.8 specification, section 8.3 Common Functions /// @see New round to even technique template - genType roundEven(genType const & x); + GLM_FUNC_DECL genType roundEven(genType const & x); /// Returns a value equal to the nearest integer /// that is greater than or equal to x. @@ -113,7 +113,7 @@ namespace glm /// @see GLSL ceil man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType ceil(genType const & x); + GLM_FUNC_DECL genType ceil(genType const & x); /// Return x - floor(x). /// @@ -122,7 +122,7 @@ namespace glm /// @see GLSL fract man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType fract(genType const & x); + GLM_FUNC_DECL genType fract(genType const & x); /// Modulus. Returns x - y * floor(x / y) /// for each component in x using the floating point value y. @@ -132,7 +132,7 @@ namespace glm /// @see GLSL mod man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType mod( + GLM_FUNC_DECL genType mod( genType const & x, genType const & y); @@ -144,7 +144,7 @@ namespace glm /// @see GLSL mod man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType mod( + GLM_FUNC_DECL genType mod( genType const & x, typename genType::value_type const & y); @@ -158,7 +158,7 @@ namespace glm /// @see GLSL modf man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType modf( + GLM_FUNC_DECL genType modf( genType const & x, genType & i); @@ -169,12 +169,12 @@ namespace glm /// @see GLSL min man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType min( + GLM_FUNC_DECL genType min( genType const & x, genType const & y); template - genType min( + GLM_FUNC_DECL genType min( genType const & x, typename genType::value_type const & y); @@ -185,12 +185,12 @@ namespace glm /// @see GLSL max man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType max( + GLM_FUNC_DECL genType max( genType const & x, genType const & y); template - genType max( + GLM_FUNC_DECL genType max( genType const & x, typename genType::value_type const & y); @@ -202,33 +202,33 @@ namespace glm /// @see GLSL clamp man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType clamp( + GLM_FUNC_DECL genType clamp( genType const & x, genType const & minVal, genType const & maxVal); template - genType clamp( + GLM_FUNC_DECL genType clamp( genType const & x, typename genType::value_type const & minVal, typename genType::value_type const & maxVal); - //! @return If genTypeU is a floating scalar or vector: - //! Returns x * (1.0 - a) + y * a, i.e., the linear blend of - //! x and y using the floating-point value a. - //! The value for a is not restricted to the range [0, 1]. - //! - //! @return If genTypeU is a boolean scalar or vector: - //! Selects which vector each returned component comes - //! from. For a component of a that is false, the - //! corresponding component of x is returned. For a - //! component of a that is true, the corresponding - //! component of y is returned. Components of x and y that - //! are not selected are allowed to be invalid floating point - //! values and will have no effect on the results. Thus, this - //! provides different functionality than - //! genType mix(genType x, genType y, genType(a)) - //! where a is a Boolean vector. + /// If genTypeU is a floating scalar or vector: + /// Returns x * (1.0 - a) + y * a, i.e., the linear blend of + /// x and y using the floating-point value a. + /// The value for a is not restricted to the range [0, 1]. + /// + /// If genTypeU is a boolean scalar or vector: + /// Selects which vector each returned component comes + /// from. For a component of that is false, the + /// corresponding component of x is returned. For a + /// component of a that is true, the corresponding + /// component of y is returned. Components of x and y that + /// are not selected are allowed to be invalid floating point + /// values and will have no effect on the results. Thus, this + /// provides different functionality than + /// genType mix(genType x, genType y, genType(a)) + /// where a is a Boolean vector. /// /// @see GLSL mix man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions @@ -256,19 +256,19 @@ namespace glm /// glm::vec4 u = glm::mix(g, h, r); // Interpolations can be perform per component with a vector for the last parameter. /// @endcode template - genTypeT mix(genTypeT const & x, genTypeT const & y, genTypeU const & a); + GLM_FUNC_DECL genTypeT mix(genTypeT const & x, genTypeT const & y, genTypeU const & a); //! Returns 0.0 if x < edge, otherwise it returns 1.0. //! /// @see GLSL step man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType step( + GLM_FUNC_DECL genType step( genType const & edge, genType const & x); template - genType step( + GLM_FUNC_DECL genType step( typename genType::value_type const & edge, genType const & x); @@ -278,8 +278,8 @@ namespace glm /// you would want a threshold function with a smooth /// transition. This is equivalent to: /// genType t; - /// t = clamp ((x – edge0) / (edge1 – edge0), 0, 1); - /// return t * t * (3 – 2 * t); + /// t = clamp ((x - edge0) / (edge1 - edge0), 0, 1); + /// return t * t * (3 - 2 * t); /// Results are undefined if edge0 >= edge1. /// /// @tparam genType Floating-point scalar or vector types. @@ -287,13 +287,13 @@ namespace glm /// @see GLSL smoothstep man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType smoothstep( + GLM_FUNC_DECL genType smoothstep( genType const & edge0, genType const & edge1, genType const & x); template - genType smoothstep( + GLM_FUNC_DECL genType smoothstep( typename genType::value_type const & edge0, typename genType::value_type const & edge1, genType const & x); @@ -311,7 +311,7 @@ namespace glm /// @see GLSL isnan man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - typename genType::bool_type isnan(genType const & x); + GLM_FUNC_DECL typename genType::bool_type isnan(genType const & x); /// Returns true if x holds a positive infinity or negative /// infinity representation in the underlying implementation's @@ -324,7 +324,7 @@ namespace glm /// @see GLSL isinf man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - typename genType::bool_type isinf(genType const & x); + GLM_FUNC_DECL typename genType::bool_type isinf(genType const & x); /// Returns a signed integer value representing /// the encoding of a floating-point value. The floatingpoint @@ -336,7 +336,7 @@ namespace glm /// @see GLSL floatBitsToInt man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genIType floatBitsToInt(genType const & value); + GLM_FUNC_DECL genIType floatBitsToInt(genType const & value); /// Returns a unsigned integer value representing /// the encoding of a floating-point value. The floatingpoint @@ -348,7 +348,7 @@ namespace glm /// @see GLSL floatBitsToUint man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genUType floatBitsToUint(genType const & value); + GLM_FUNC_DECL genUType floatBitsToUint(genType const & value); /// Returns a floating-point value corresponding to a signed /// integer encoding of a floating-point value. @@ -364,7 +364,7 @@ namespace glm /// /// @todo Clarify this declaration, we don't need to actually specify the return type template - genType intBitsToFloat(genIType const & value); + GLM_FUNC_DECL genType intBitsToFloat(genIType const & value); /// Returns a floating-point value corresponding to a /// unsigned integer encoding of a floating-point value. @@ -380,7 +380,7 @@ namespace glm /// /// @todo Clarify this declaration, we don't need to actually specify the return type template - genType uintBitsToFloat(genUType const & value); + GLM_FUNC_DECL genType uintBitsToFloat(genUType const & value); /// Computes and returns a * b + c. /// @@ -389,7 +389,7 @@ namespace glm /// @see GLSL fma man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType fma(genType const & a, genType const & b, genType const & c); + GLM_FUNC_DECL genType fma(genType const & a, genType const & b, genType const & c); /// Splits x into a floating-point significand in the range /// [0.5, 1.0) and an integral exponent of two, such that: @@ -406,7 +406,7 @@ namespace glm /// @see GLSL frexp man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType frexp(genType const & x, genIType & exp); + GLM_FUNC_DECL genType frexp(genType const & x, genIType & exp); /// Builds a floating-point number from x and the /// corresponding integral exponent of two in exp, returning: @@ -420,7 +420,7 @@ namespace glm /// @see GLSL ldexp man page; /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType ldexp(genType const & x, genIType const & exp); + GLM_FUNC_DECL genType ldexp(genType const & x, genIType const & exp); /// @} }//namespace glm diff --git a/include/gal/opengl/glm/core/func_common.inl b/include/gal/opengl/glm/core/func_common.inl index 9c1c0470c2..1c0d9df979 100644 --- a/include/gal/opengl/glm/core/func_common.inl +++ b/include/gal/opengl/glm/core/func_common.inl @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -36,7 +36,7 @@ namespace detail template struct Abs_ { - static genFIType get(genFIType const & x) + GLM_FUNC_QUALIFIER static genFIType get(genFIType const & x) { GLM_STATIC_ASSERT( detail::type::is_float || @@ -49,7 +49,7 @@ namespace detail template struct Abs_ { - static genFIType get(genFIType const & x) + GLM_FUNC_QUALIFIER static genFIType get(genFIType const & x) { GLM_STATIC_ASSERT( detail::type::is_uint, "'abs' only accept floating-point and integer inputs"); @@ -275,7 +275,7 @@ namespace detail //// Only valid if (INT_MIN <= x-y <= INT_MAX) //// min(x,y) //r = y + ((x - y) & ((x - y) >> (sizeof(int) * - //CHAR_BIT – 1))); + //CHAR_BIT - 1))); //// max(x,y) //r = x - ((x - y) & ((x - y) >> (sizeof(int) * //CHAR_BIT - 1))); @@ -420,93 +420,87 @@ namespace detail } // mix - template - GLM_FUNC_QUALIFIER genTypeT mix + template + GLM_FUNC_QUALIFIER genType mix ( - genTypeT const & x, - genTypeT const & y, - genTypeU const & a + genType const & x, + genType const & y, + genType const & a ) { - // It could be a vector too - //GLM_STATIC_ASSERT( - // detail::type::is_float && - // detail::type::is_float); + GLM_STATIC_ASSERT(detail::type::is_float , "'genType' is not floating-point type"); - //return x + a * (y - x); - return genTypeT(genTypeU(x) + a * genTypeU(y - x)); + return x + a * (y - x); } - template - GLM_FUNC_QUALIFIER detail::tvec2 mix + template + GLM_FUNC_QUALIFIER detail::tvec2 mix ( - detail::tvec2 const & x, - detail::tvec2 const & y, - valTypeB const & a + detail::tvec2 const & x, + detail::tvec2 const & y, + valType const & a ) { - return detail::tvec2( - detail::tvec2(x) + a * detail::tvec2(y - x)); + GLM_STATIC_ASSERT(detail::type::is_float , "'genType' is not floating-point type"); + + return x + a * (y - x); } - template - GLM_FUNC_QUALIFIER detail::tvec3 mix + template + GLM_FUNC_QUALIFIER detail::tvec3 mix ( - detail::tvec3 const & x, - detail::tvec3 const & y, - valTypeB const & a + detail::tvec3 const & x, + detail::tvec3 const & y, + valType const & a ) { - return detail::tvec3( - detail::tvec3(x) + a * detail::tvec3(y - x)); + return x + a * (y - x); } - template - GLM_FUNC_QUALIFIER detail::tvec4 mix + template + GLM_FUNC_QUALIFIER detail::tvec4 mix ( - detail::tvec4 const & x, - detail::tvec4 const & y, - valTypeB const & a + detail::tvec4 const & x, + detail::tvec4 const & y, + valType const & a ) { - return detail::tvec4( - detail::tvec4(x) + a * detail::tvec4(y - x)); + return x + a * (y - x); } - template - GLM_FUNC_QUALIFIER detail::tvec2 mix + template + GLM_FUNC_QUALIFIER detail::tvec2 mix ( - detail::tvec2 const & x, - detail::tvec2 const & y, - detail::tvec2 const & a + detail::tvec2 const & x, + detail::tvec2 const & y, + detail::tvec2 const & a ) { - return detail::tvec2( - detail::tvec2(x) + a * detail::tvec2(y - x)); + return x + a * (y - x); } - template - GLM_FUNC_QUALIFIER detail::tvec3 mix + template + GLM_FUNC_QUALIFIER detail::tvec3 mix ( - detail::tvec3 const & x, - detail::tvec3 const & y, - detail::tvec3 const & a + detail::tvec3 const & x, + detail::tvec3 const & y, + detail::tvec3 const & a ) { - return detail::tvec3( - detail::tvec3(x) + a * detail::tvec3(y - x)); + GLM_STATIC_ASSERT(detail::type::is_float , "'genType' is not floating-point type"); + + return x + a * (y - x); } - template - GLM_FUNC_QUALIFIER detail::tvec4 mix + template + GLM_FUNC_QUALIFIER detail::tvec4 mix ( - detail::tvec4 const & x, - detail::tvec4 const & y, - detail::tvec4 const & a + detail::tvec4 const & x, + detail::tvec4 const & y, + detail::tvec4 const & a ) { - return detail::tvec4( - detail::tvec4(x) + a * detail::tvec4(y - x)); + return x + a * (y - x); } //template @@ -525,15 +519,63 @@ namespace detail // return x + a * (y - x); //} - template - GLM_FUNC_QUALIFIER genType mix + template <> + GLM_FUNC_QUALIFIER float mix ( - genType const & x, - genType const & y, + float const & x, + float const & y, bool const & a ) { - GLM_STATIC_ASSERT(detail::type::is_float, "'mix' only accept floating-point inputs"); + return a ? y : x; + } + + template <> + GLM_FUNC_QUALIFIER double mix + ( + double const & x, + double const & y, + bool const & a + ) + { + return a ? y : x; + } + + template + GLM_FUNC_QUALIFIER detail::tvec2 mix + ( + detail::tvec2 const & x, + detail::tvec2 const & y, + bool a + ) + { + GLM_STATIC_ASSERT(detail::type::is_float, "'mix' only accept floating-point inputs"); + + return a ? y : x; + } + + template + GLM_FUNC_QUALIFIER detail::tvec3 mix + ( + detail::tvec3 const & x, + detail::tvec3 const & y, + bool a + ) + { + GLM_STATIC_ASSERT(detail::type::is_float, "'mix' only accept floating-point inputs"); + + return a ? y : x; + } + + template + GLM_FUNC_QUALIFIER detail::tvec4 mix + ( + detail::tvec4 const & x, + detail::tvec4 const & y, + bool a + ) + { + GLM_STATIC_ASSERT(detail::type::is_float, "'mix' only accept floating-point inputs"); return a ? y : x; } @@ -552,8 +594,7 @@ namespace detail for ( typename detail::tvec2::size_type i = 0; - i < detail::tvec2::value_size(); - ++i + i < x.length(); ++i ) { result[i] = a[i] ? y[i] : x[i]; @@ -575,8 +616,7 @@ namespace detail for ( typename detail::tvec3::size_type i = 0; - i < detail::tvec3::value_size(); - ++i + i < x.length(); ++i ) { result[i] = a[i] ? y[i] : x[i]; @@ -598,8 +638,7 @@ namespace detail for ( typename detail::tvec4::size_type i = 0; - i < detail::tvec4::value_size(); - ++i + i < x.length(); ++i ) { result[i] = a[i] ? y[i] : x[i]; @@ -803,17 +842,19 @@ namespace detail { GLM_STATIC_ASSERT(detail::type::is_float, "'isnan' only accept floating-point inputs"); -# if(GLM_COMPILER & (GLM_COMPILER_VC | GLM_COMPILER_INTEL)) +# if(GLM_COMPILER & (GLM_COMPILER_VC | GLM_COMPILER_INTEL)) return _isnan(x) != 0; -# elif(GLM_COMPILER & GLM_COMPILER_GCC) +# elif(GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG)) # if(GLM_PLATFORM & GLM_PLATFORM_ANDROID) return _isnan(x) != 0; # else return std::isnan(x); # endif -# else +# elif(GLM_COMPILER & GLM_COMPILER_CUDA) + return isnan(x) != 0; +# else return std::isnan(x); -# endif +# endif } template @@ -858,32 +899,20 @@ namespace detail { GLM_STATIC_ASSERT(detail::type::is_float, "'isinf' only accept floating-point inputs"); -# if(GLM_COMPILER & (GLM_COMPILER_INTEL | GLM_COMPILER_VC)) +# if(GLM_COMPILER & (GLM_COMPILER_INTEL | GLM_COMPILER_VC)) return _fpclass(x) == _FPCLASS_NINF || _fpclass(x) == _FPCLASS_PINF; -# elif(GLM_COMPILER & GLM_COMPILER_GCC) +# elif(GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG)) # if(GLM_PLATFORM & GLM_PLATFORM_ANDROID) return _isinf(x) != 0; # else return std::isinf(x); # endif -# else +# elif(GLM_COMPILER & GLM_COMPILER_CUDA) + // http://developer.download.nvidia.com/compute/cuda/4_2/rel/toolkit/docs/online/group__CUDA__MATH__DOUBLE_g13431dd2b40b51f9139cbb7f50c18fab.html#g13431dd2b40b51f9139cbb7f50c18fab + return isinf(double(x)) != 0; +# else return std::isinf(x); -# endif -/* -# if(GLM_COMPILER & GLM_COMPILER_VC) - return _fpclass(x) == _FPCLASS_NINF || _fpclass(x) == _FPCLASS_PINF; -# elif(GLM_COMPILER & GLM_COMPILER_GCC) -# if(GLM_PLATFORM & GLM_PLATFORM_ANDROID) - return _isinf(x) != 0; -# else - return std::isinf(x); -# endif -# elif(GLM_COMPILER & GLM_COMPILER_INTEL) - return isinf(x) != 0; -# else - return std::isinf(x); -# endif -*/ +# endif } template diff --git a/include/gal/opengl/glm/core/func_exponential.hpp b/include/gal/opengl/glm/core/func_exponential.hpp index 557ac175d2..dc76fcbb93 100644 --- a/include/gal/opengl/glm/core/func_exponential.hpp +++ b/include/gal/opengl/glm/core/func_exponential.hpp @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -41,16 +41,16 @@ namespace glm /// @addtogroup core_func_exponential /// @{ - /// Returns x raised to the y power. + /// Returns 'base' raised to the power 'exponent'. /// - /// @param x pow function is defined for input values of x defined in the range (inf-, inf+) in the limit of the type precision. - /// @param y + /// @param base Floating point value. pow function is defined for input values of x defined in the range (inf-, inf+) in the limit of the type precision. + /// @param exponent Floating point value representing the 'exponent'. /// @tparam genType Floating-point scalar or vector types. /// /// @see GLSL pow man page /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions template - genType pow(genType const & x, genType const & y); + GLM_FUNC_DECL genType pow(genType const & base, genType const & exponent); /// Returns the natural exponentiation of x, i.e., e^x. /// @@ -60,7 +60,7 @@ namespace glm /// @see GLSL exp man page /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions template - genType exp(genType const & x); + GLM_FUNC_DECL genType exp(genType const & x); /// Returns the natural logarithm of x, i.e., /// returns the value y which satisfies the equation x = e^y. @@ -72,7 +72,7 @@ namespace glm /// @see GLSL log man page /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions template - genType log(genType const & x); + GLM_FUNC_DECL genType log(genType const & x); /// Returns 2 raised to the x power. /// @@ -82,7 +82,7 @@ namespace glm /// @see GLSL exp2 man page /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions template - genType exp2(genType const & x); + GLM_FUNC_DECL genType exp2(genType const & x); /// Returns the base 2 log of x, i.e., returns the value y, /// which satisfies the equation x = 2 ^ y. @@ -93,7 +93,7 @@ namespace glm /// @see GLSL log2 man page /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions template - genType log2(genType const & x); + GLM_FUNC_DECL genType log2(genType const & x); /// Returns the positive square root of x. /// @@ -103,7 +103,7 @@ namespace glm /// @see GLSL sqrt man page /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions template - genType sqrt(genType const & x); + GLM_FUNC_DECL genType sqrt(genType const & x); /// Returns the reciprocal of the positive square root of x. /// @@ -113,7 +113,7 @@ namespace glm /// @see GLSL inversesqrt man page /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions template - genType inversesqrt(genType const & x); + GLM_FUNC_DECL genType inversesqrt(genType const & x); /// @} }//namespace glm diff --git a/include/gal/opengl/glm/core/func_exponential.inl b/include/gal/opengl/glm/core/func_exponential.inl index 6ae709c6de..1b08786df6 100644 --- a/include/gal/opengl/glm/core/func_exponential.inl +++ b/include/gal/opengl/glm/core/func_exponential.inl @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -146,6 +146,7 @@ namespace _detail ) { GLM_STATIC_ASSERT(detail::type::is_float, "'inversesqrt' only accept floating-point input"); + assert(x > genType(0)); return genType(1) / ::std::sqrt(x); } diff --git a/include/gal/opengl/glm/core/func_geometric.hpp b/include/gal/opengl/glm/core/func_geometric.hpp index 1c92e1b88b..c221084f14 100644 --- a/include/gal/opengl/glm/core/func_geometric.hpp +++ b/include/gal/opengl/glm/core/func_geometric.hpp @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -48,7 +48,7 @@ namespace glm /// @see GLSL length man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - typename genType::value_type length( + GLM_FUNC_DECL typename genType::value_type length( genType const & x); /// Returns the distance betwwen p0 and p1, i.e., length(p0 - p1). @@ -58,7 +58,7 @@ namespace glm /// @see GLSL distance man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - typename genType::value_type distance( + GLM_FUNC_DECL typename genType::value_type distance( genType const & p0, genType const & p1); @@ -69,7 +69,7 @@ namespace glm /// @see GLSL dot man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - typename genType::value_type dot( + GLM_FUNC_DECL typename genType::value_type dot( genType const & x, genType const & y); @@ -80,7 +80,7 @@ namespace glm /// @see GLSL cross man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - detail::tvec3 cross( + GLM_FUNC_DECL detail::tvec3 cross( detail::tvec3 const & x, detail::tvec3 const & y); @@ -89,7 +89,7 @@ namespace glm /// @see GLSL normalize man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - genType normalize( + GLM_FUNC_DECL genType normalize( genType const & x); /// If dot(Nref, I) < 0.0, return N, otherwise, return -N. @@ -99,7 +99,7 @@ namespace glm /// @see GLSL faceforward man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - genType faceforward( + GLM_FUNC_DECL genType faceforward( genType const & N, genType const & I, genType const & Nref); @@ -112,7 +112,7 @@ namespace glm /// @see GLSL reflect man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - genType reflect( + GLM_FUNC_DECL genType reflect( genType const & I, genType const & N); @@ -125,7 +125,7 @@ namespace glm /// @see GLSL refract man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - genType refract( + GLM_FUNC_DECL genType refract( genType const & I, genType const & N, typename genType::value_type const & eta); diff --git a/include/gal/opengl/glm/core/func_geometric.inl b/include/gal/opengl/glm/core/func_geometric.inl index 1923d05d1b..259a0ffdf9 100644 --- a/include/gal/opengl/glm/core/func_geometric.inl +++ b/include/gal/opengl/glm/core/func_geometric.inl @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -132,7 +132,6 @@ namespace glm ( genType const & x, genType const & y - ) { GLM_STATIC_ASSERT(detail::type::is_float, "'dot' only accept floating-point inputs"); @@ -271,7 +270,7 @@ namespace glm // reflect template - genType reflect + GLM_FUNC_QUALIFIER genType reflect ( genType const & I, genType const & N diff --git a/include/gal/opengl/glm/core/func_integer.hpp b/include/gal/opengl/glm/core/func_integer.hpp index affbcd8fa5..df9a401591 100644 --- a/include/gal/opengl/glm/core/func_integer.hpp +++ b/include/gal/opengl/glm/core/func_integer.hpp @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -52,7 +52,7 @@ namespace glm /// @see GLSL uaddCarry man page /// @see GLSL 4.20.8 specification, section 8.8 Integer Functions template - genUType uaddCarry( + GLM_FUNC_DECL genUType uaddCarry( genUType const & x, genUType const & y, genUType & carry); @@ -66,7 +66,7 @@ namespace glm /// @see GLSL usubBorrow man page /// @see GLSL 4.20.8 specification, section 8.8 Integer Functions template - genUType usubBorrow( + GLM_FUNC_DECL genUType usubBorrow( genUType const & x, genUType const & y, genUType & borrow); @@ -80,7 +80,7 @@ namespace glm /// @see GLSL umulExtended man page /// @see GLSL 4.20.8 specification, section 8.8 Integer Functions template - void umulExtended( + GLM_FUNC_DECL void umulExtended( genUType const & x, genUType const & y, genUType & msb, @@ -95,7 +95,7 @@ namespace glm /// @see GLSL imulExtended man page /// @see GLSL 4.20.8 specification, section 8.8 Integer Functions template - void imulExtended( + GLM_FUNC_DECL void imulExtended( genIType const & x, genIType const & y, genIType & msb, @@ -105,7 +105,7 @@ namespace glm /// returning them in the least significant bits of the result. /// For unsigned data types, the most significant bits of the /// result will be set to zero. For signed data types, the - /// most significant bits will be set to the value of bit offset + base – 1. + /// most significant bits will be set to the value of bit offset + base - 1. /// /// If bits is zero, the result will be zero. The result will be /// undefined if offset or bits is negative, or if the sum of @@ -117,7 +117,7 @@ namespace glm /// @see GLSL bitfieldExtract man page /// @see GLSL 4.20.8 specification, section 8.8 Integer Functions template - genIUType bitfieldExtract( + GLM_FUNC_DECL genIUType bitfieldExtract( genIUType const & Value, int const & Offset, int const & Bits); @@ -125,7 +125,7 @@ namespace glm /// Returns the insertion the bits least-significant bits of insert into base. /// /// The result will have bits [offset, offset + bits - 1] taken - /// from bits [0, bits – 1] of insert, and all other bits taken + /// from bits [0, bits - 1] of insert, and all other bits taken /// directly from the corresponding bits of base. If bits is /// zero, the result will simply be base. The result will be /// undefined if offset or bits is negative, or if the sum of @@ -137,7 +137,7 @@ namespace glm /// @see GLSL bitfieldInsert man page /// @see GLSL 4.20.8 specification, section 8.8 Integer Functions template - genIUType bitfieldInsert( + GLM_FUNC_DECL genIUType bitfieldInsert( genIUType const & Base, genIUType const & Insert, int const & Offset, @@ -152,7 +152,7 @@ namespace glm /// @see GLSL bitfieldReverse man page /// @see GLSL 4.20.8 specification, section 8.8 Integer Functions template - genIUType bitfieldReverse(genIUType const & Value); + GLM_FUNC_DECL genIUType bitfieldReverse(genIUType const & Value); /// Returns the number of bits set to 1 in the binary representation of value. /// @@ -163,7 +163,7 @@ namespace glm /// /// @todo Clarify the declaration to specify that scalars are suported. template class genIUType> - typename genIUType::signed_type bitCount(genIUType const & Value); + GLM_FUNC_DECL typename genIUType::signed_type bitCount(genIUType const & Value); /// Returns the bit number of the least significant bit set to /// 1 in the binary representation of value. @@ -176,7 +176,7 @@ namespace glm /// /// @todo Clarify the declaration to specify that scalars are suported. template class genIUType> - typename genIUType::signed_type findLSB(genIUType const & Value); + GLM_FUNC_DECL typename genIUType::signed_type findLSB(genIUType const & Value); /// Returns the bit number of the most significant bit in the binary representation of value. /// For positive integers, the result will be the bit number of the most significant bit set to 1. @@ -190,7 +190,7 @@ namespace glm /// /// @todo Clarify the declaration to specify that scalars are suported. template class genIUType> - typename genIUType::signed_type findMSB(genIUType const & Value); + GLM_FUNC_DECL typename genIUType::signed_type findMSB(genIUType const & Value); /// @} }//namespace glm diff --git a/include/gal/opengl/glm/core/func_integer.inl b/include/gal/opengl/glm/core/func_integer.inl index ae7bf8af36..ad8b1fe83c 100644 --- a/include/gal/opengl/glm/core/func_integer.inl +++ b/include/gal/opengl/glm/core/func_integer.inl @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -26,10 +26,12 @@ /// @author Christophe Riccio /////////////////////////////////////////////////////////////////////////////////// +#if(GLM_ARCH != GLM_ARCH_PURE) #if(GLM_COMPILER & GLM_COMPILER_VC) -#include -#pragma intrinsic(_BitScanReverse) -#endif +# include +# pragma intrinsic(_BitScanReverse) +#endif//(GLM_COMPILER & GLM_COMPILER_VC) +#endif//(GLM_ARCH != GLM_ARCH_PURE) namespace glm { @@ -103,7 +105,7 @@ namespace glm if(x > y) return genUType(detail::highp_int_t(x) - detail::highp_int_t(y)); else - return genUType(detail::highp_int_t(1) << detail::highp_int_t(32) + detail::highp_int_t(x) - detail::highp_int_t(y)); + return genUType((detail::highp_int_t(1) << detail::highp_int_t(32)) + detail::highp_int_t(x) - detail::highp_int_t(y)); } template @@ -521,7 +523,6 @@ namespace glm } // findMSB -/* #if((GLM_ARCH != GLM_ARCH_PURE) && (GLM_COMPILER & GLM_COMPILER_VC)) template @@ -538,7 +539,7 @@ namespace glm _BitScanReverse(&Result, Value); return int(Result); } - +/* // __builtin_clz seems to be buggy as it crasks for some values, from 0x00200000 to 80000000 #elif((GLM_ARCH != GLM_ARCH_PURE) && (GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC40)) @@ -560,8 +561,9 @@ namespace glm // return 31 - __builtin_clzl(Value); } -#else */ +#else + /* SSE implementation idea __m128i const Zero = _mm_set_epi32( 0, 0, 0, 0); @@ -606,7 +608,7 @@ namespace glm return MostSignificantBit; } } -//#endif//(GLM_COMPILER) +#endif//(GLM_COMPILER) template GLM_FUNC_QUALIFIER detail::tvec2 findMSB diff --git a/include/gal/opengl/glm/core/func_matrix.hpp b/include/gal/opengl/glm/core/func_matrix.hpp index ac1fda8482..3c92cbbaba 100644 --- a/include/gal/opengl/glm/core/func_matrix.hpp +++ b/include/gal/opengl/glm/core/func_matrix.hpp @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -53,7 +53,7 @@ namespace glm /// @see GLSL matrixCompMult man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions template - matType matrixCompMult( + GLM_FUNC_DECL matType matrixCompMult( matType const & x, matType const & y); @@ -68,7 +68,7 @@ namespace glm /// /// @todo Clarify the declaration to specify that matType doesn't have to be provided when used. template - matType outerProduct( + GLM_FUNC_DECL matType outerProduct( vecType const & c, vecType const & r); @@ -79,7 +79,7 @@ namespace glm /// @see GLSL transpose man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions template - typename matType::transpose_type transpose( + GLM_FUNC_DECL typename matType::transpose_type transpose( matType const & x); /// Return the determinant of a mat2 matrix. @@ -89,7 +89,7 @@ namespace glm /// @see GLSL determinant man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions template - typename detail::tmat2x2::value_type determinant( + GLM_FUNC_DECL typename detail::tmat2x2::value_type determinant( detail::tmat2x2 const & m); /// Return the determinant of a mat3 matrix. @@ -99,7 +99,7 @@ namespace glm /// @see GLSL determinant man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions template - typename detail::tmat3x3::value_type determinant( + GLM_FUNC_DECL typename detail::tmat3x3::value_type determinant( detail::tmat3x3 const & m); /// Return the determinant of a mat4 matrix. @@ -109,7 +109,7 @@ namespace glm /// @see GLSL determinant man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions template - typename detail::tmat4x4::value_type determinant( + GLM_FUNC_DECL typename detail::tmat4x4::value_type determinant( detail::tmat4x4 const & m); /// Return the inverse of a mat2 matrix. @@ -119,7 +119,7 @@ namespace glm /// @see GLSL inverse man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions template - detail::tmat2x2 inverse( + GLM_FUNC_DECL detail::tmat2x2 inverse( detail::tmat2x2 const & m); /// Return the inverse of a mat3 matrix. @@ -129,7 +129,7 @@ namespace glm /// @see GLSL inverse man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions template - detail::tmat3x3 inverse( + GLM_FUNC_DECL detail::tmat3x3 inverse( detail::tmat3x3 const & m); /// Return the inverse of a mat4 matrix. @@ -139,7 +139,7 @@ namespace glm /// @see GLSL inverse man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions template - detail::tmat4x4 inverse( + GLM_FUNC_DECL detail::tmat4x4 inverse( detail::tmat4x4 const & m); /// @} diff --git a/include/gal/opengl/glm/core/func_matrix.inl b/include/gal/opengl/glm/core/func_matrix.inl index 3b07b74b1d..d89d5d4b16 100644 --- a/include/gal/opengl/glm/core/func_matrix.inl +++ b/include/gal/opengl/glm/core/func_matrix.inl @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights diff --git a/include/gal/opengl/glm/core/func_noise.hpp b/include/gal/opengl/glm/core/func_noise.hpp index 369f56de6f..3e5f874187 100644 --- a/include/gal/opengl/glm/core/func_noise.hpp +++ b/include/gal/opengl/glm/core/func_noise.hpp @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -50,7 +50,7 @@ namespace glm /// @see GLSL noise1 man page /// @see GLSL 4.20.8 specification, section 8.13 Noise Functions template - typename genType::value_type noise1(genType const & x); + GLM_FUNC_DECL typename genType::value_type noise1(genType const & x); /// Returns a 2D noise value based on the input value x. /// @@ -59,7 +59,7 @@ namespace glm /// @see GLSL noise2 man page /// @see GLSL 4.20.8 specification, section 8.13 Noise Functions template - detail::tvec2 noise2(genType const & x); + GLM_FUNC_DECL detail::tvec2 noise2(genType const & x); /// Returns a 3D noise value based on the input value x. /// @@ -68,7 +68,7 @@ namespace glm /// @see GLSL noise3 man page /// @see GLSL 4.20.8 specification, section 8.13 Noise Functions template - detail::tvec3 noise3(genType const & x); + GLM_FUNC_DECL detail::tvec3 noise3(genType const & x); /// Returns a 4D noise value based on the input value x. /// @@ -77,7 +77,7 @@ namespace glm /// @see GLSL noise4 man page /// @see GLSL 4.20.8 specification, section 8.13 Noise Functions template - detail::tvec4 noise4(genType const & x); + GLM_FUNC_DECL detail::tvec4 noise4(genType const & x); /// @} }//namespace glm diff --git a/include/gal/opengl/glm/core/func_noise.inl b/include/gal/opengl/glm/core/func_noise.inl index a53ba5a75b..68a19333f1 100644 --- a/include/gal/opengl/glm/core/func_noise.inl +++ b/include/gal/opengl/glm/core/func_noise.inl @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights diff --git a/include/gal/opengl/glm/core/func_packing.hpp b/include/gal/opengl/glm/core/func_packing.hpp index e4f26dcbf5..b4312e12b4 100644 --- a/include/gal/opengl/glm/core/func_packing.hpp +++ b/include/gal/opengl/glm/core/func_packing.hpp @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -52,7 +52,7 @@ namespace glm //! /// @see GLSL packUnorm2x16 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - detail::uint32 packUnorm2x16(detail::tvec2 const & v); + GLM_FUNC_DECL detail::uint32 packUnorm2x16(detail::tvec2 const & v); //! First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. //! Then, the results are packed into the returned 32-bit unsigned integer. @@ -65,7 +65,7 @@ namespace glm //! /// @see GLSL packSnorm2x16 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - detail::uint32 packSnorm2x16(detail::tvec2 const & v); + GLM_FUNC_DECL detail::uint32 packSnorm2x16(detail::tvec2 const & v); //! First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. //! Then, the results are packed into the returned 32-bit unsigned integer. @@ -78,7 +78,7 @@ namespace glm //! /// @see GLSL packUnorm4x8 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - detail::uint32 packUnorm4x8(detail::tvec4 const & v); + GLM_FUNC_DECL detail::uint32 packUnorm4x8(detail::tvec4 const & v); //! First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. //! Then, the results are packed into the returned 32-bit unsigned integer. @@ -91,7 +91,7 @@ namespace glm //! /// @see GLSL packSnorm4x8 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - detail::uint32 packSnorm4x8(detail::tvec4 const & v); + GLM_FUNC_DECL detail::uint32 packSnorm4x8(detail::tvec4 const & v); //! First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. //! Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector. @@ -104,7 +104,7 @@ namespace glm //! /// @see GLSL unpackUnorm2x16 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - detail::tvec2 unpackUnorm2x16(detail::uint32 const & p); + GLM_FUNC_DECL detail::tvec2 unpackUnorm2x16(detail::uint32 const & p); //! First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. //! Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector. @@ -117,7 +117,7 @@ namespace glm //! /// @see GLSL unpackSnorm2x16 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - detail::tvec2 unpackSnorm2x16(detail::uint32 const & p); + GLM_FUNC_DECL detail::tvec2 unpackSnorm2x16(detail::uint32 const & p); /// First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. /// Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector. @@ -130,7 +130,7 @@ namespace glm /// /// @see GLSL unpackUnorm4x8 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - detail::tvec4 unpackUnorm4x8(detail::uint32 const & p); + GLM_FUNC_DECL detail::tvec4 unpackUnorm4x8(detail::uint32 const & p); /// First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. /// Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector. @@ -143,7 +143,7 @@ namespace glm /// /// @see GLSL unpackSnorm4x8 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - detail::tvec4 unpackSnorm4x8(detail::uint32 const & p); + GLM_FUNC_DECL detail::tvec4 unpackSnorm4x8(detail::uint32 const & p); /// Returns a double-precision value obtained by packing the components of v into a 64-bit value. /// If an IEEE 754 Inf or NaN is created, it will not signal, and the resulting floating point value is unspecified. @@ -153,7 +153,7 @@ namespace glm /// /// @see GLSL packDouble2x32 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - double packDouble2x32(detail::tvec2 const & v); + GLM_FUNC_DECL double packDouble2x32(detail::tvec2 const & v); /// Returns a two-component unsigned integer vector representation of v. /// The bit-level representation of v is preserved. @@ -162,7 +162,7 @@ namespace glm /// /// @see GLSL unpackDouble2x32 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - detail::tvec2 unpackDouble2x32(double const & v); + GLM_FUNC_DECL detail::tvec2 unpackDouble2x32(double const & v); /// Returns an unsigned integer obtained by converting the components of a two-component floating-point vector /// to the 16-bit floating-point representation found in the OpenGL Specification, @@ -172,7 +172,7 @@ namespace glm /// /// @see GLSL packHalf2x16 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - uint packHalf2x16(vec2 const & v); + GLM_FUNC_DECL uint packHalf2x16(vec2 const & v); /// Returns a two-component floating-point vector with components obtained by unpacking a 32-bit unsigned integer into a pair of 16-bit values, /// interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, @@ -182,7 +182,7 @@ namespace glm /// /// @see GLSL unpackHalf2x16 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - vec2 unpackHalf2x16(uint const & v); + GLM_FUNC_DECL vec2 unpackHalf2x16(uint const & v); /// @} }//namespace glm diff --git a/include/gal/opengl/glm/core/func_packing.inl b/include/gal/opengl/glm/core/func_packing.inl index 27197151bb..e10e161840 100644 --- a/include/gal/opengl/glm/core/func_packing.inl +++ b/include/gal/opengl/glm/core/func_packing.inl @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -136,12 +136,42 @@ namespace glm GLM_FUNC_QUALIFIER double packDouble2x32(detail::tvec2 const & v) { - return *(double*)&v; + struct uint32_pair + { + detail::uint32 x; + detail::uint32 y; + }; + + union helper + { + uint32_pair input; + double output; + } Helper; + + Helper.input.x = v.x; + Helper.input.y = v.y; + + return Helper.output; + //return *(double*)&v; } GLM_FUNC_QUALIFIER detail::tvec2 unpackDouble2x32(double const & v) { - return *(detail::tvec2*)&v; + struct uint32_pair + { + detail::uint32 x; + detail::uint32 y; + }; + + union helper + { + double input; + uint32_pair output; + } Helper; + + Helper.input = v; + + return detail::tvec2(Helper.output.x, Helper.output.y); } GLM_FUNC_QUALIFIER uint packHalf2x16(detail::tvec2 const & v) @@ -157,7 +187,7 @@ namespace glm Pack.orig.a = detail::toFloat16(v.x); Pack.orig.b = detail::toFloat16(v.y); - return *(uint*)&Pack; + return Pack.other; } GLM_FUNC_QUALIFIER vec2 unpackHalf2x16(uint const & v) diff --git a/include/gal/opengl/glm/core/func_trigonometric.hpp b/include/gal/opengl/glm/core/func_trigonometric.hpp index ccb7f9ea6d..9954d9cea6 100644 --- a/include/gal/opengl/glm/core/func_trigonometric.hpp +++ b/include/gal/opengl/glm/core/func_trigonometric.hpp @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -52,7 +52,7 @@ namespace glm /// @see GLSL radians man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType radians(genType const & degrees); + GLM_FUNC_DECL genType radians(genType const & degrees); /// Converts radians to degrees and returns the result. /// @@ -61,7 +61,7 @@ namespace glm /// @see GLSL degrees man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType degrees(genType const & radians); + GLM_FUNC_DECL genType degrees(genType const & radians); /// The standard trigonometric sine function. /// The values returned by this function will range from [-1, 1]. @@ -71,7 +71,7 @@ namespace glm /// @see GLSL sin man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType sin(genType const & angle); + GLM_FUNC_DECL genType sin(genType const & angle); /// The standard trigonometric cosine function. /// The values returned by this function will range from [-1, 1]. @@ -81,7 +81,7 @@ namespace glm /// @see GLSL cos man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType cos(genType const & angle); + GLM_FUNC_DECL genType cos(genType const & angle); /// The standard trigonometric tangent function. /// @@ -90,7 +90,7 @@ namespace glm /// @see GLSL tan man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType tan(genType const & angle); + GLM_FUNC_DECL genType tan(genType const & angle); /// Arc sine. Returns an angle whose sine is x. /// The range of values returned by this function is [-PI/2, PI/2]. @@ -101,7 +101,7 @@ namespace glm /// @see GLSL asin man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType asin(genType const & x); + GLM_FUNC_DECL genType asin(genType const & x); /// Arc cosine. Returns an angle whose sine is x. /// The range of values returned by this function is [0, PI]. @@ -112,7 +112,7 @@ namespace glm /// @see GLSL acos man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType acos(genType const & x); + GLM_FUNC_DECL genType acos(genType const & x); /// Arc tangent. Returns an angle whose tangent is y/x. /// The signs of x and y are used to determine what @@ -125,7 +125,7 @@ namespace glm /// @see GLSL atan man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType atan(genType const & y, genType const & x); + GLM_FUNC_DECL genType atan(genType const & y, genType const & x); /// Arc tangent. Returns an angle whose tangent is y_over_x. /// The range of values returned by this function is [-PI/2, PI/2]. @@ -135,7 +135,7 @@ namespace glm /// @see GLSL atan man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType atan(genType const & y_over_x); + GLM_FUNC_DECL genType atan(genType const & y_over_x); /// Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2 /// @@ -144,7 +144,7 @@ namespace glm /// @see GLSL sinh man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType sinh(genType const & angle); + GLM_FUNC_DECL genType sinh(genType const & angle); /// Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2 /// @@ -153,7 +153,7 @@ namespace glm /// @see GLSL cosh man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType cosh(genType const & angle); + GLM_FUNC_DECL genType cosh(genType const & angle); /// Returns the hyperbolic tangent function, sinh(angle) / cosh(angle) /// @@ -162,7 +162,7 @@ namespace glm /// @see GLSL tanh man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType tanh(genType const & angle); + GLM_FUNC_DECL genType tanh(genType const & angle); /// Arc hyperbolic sine; returns the inverse of sinh. /// @@ -171,7 +171,7 @@ namespace glm /// @see GLSL asinh man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType asinh(genType const & x); + GLM_FUNC_DECL genType asinh(genType const & x); /// Arc hyperbolic cosine; returns the non-negative inverse /// of cosh. Results are undefined if x < 1. @@ -181,7 +181,7 @@ namespace glm /// @see GLSL acosh man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType acosh(genType const & x); + GLM_FUNC_DECL genType acosh(genType const & x); /// Arc hyperbolic tangent; returns the inverse of tanh. /// Results are undefined if abs(x) >= 1. @@ -191,7 +191,7 @@ namespace glm /// @see GLSL atanh man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType atanh(genType const & x); + GLM_FUNC_DECL genType atanh(genType const & x); /// @} }//namespace glm diff --git a/include/gal/opengl/glm/core/func_trigonometric.inl b/include/gal/opengl/glm/core/func_trigonometric.inl index 240cdafca0..bd59cd73d4 100644 --- a/include/gal/opengl/glm/core/func_trigonometric.inl +++ b/include/gal/opengl/glm/core/func_trigonometric.inl @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights diff --git a/include/gal/opengl/glm/core/func_vector_relational.hpp b/include/gal/opengl/glm/core/func_vector_relational.hpp index 7b5a7cd080..4ffe14eab7 100644 --- a/include/gal/opengl/glm/core/func_vector_relational.hpp +++ b/include/gal/opengl/glm/core/func_vector_relational.hpp @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// OpenGL Mathematics (glm.g-truc.net) /// -/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights @@ -55,7 +55,7 @@ namespace glm /// @see GLSL lessThan man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template - typename vecType::bool_type lessThan(vecType const & x, vecType const & y); + GLM_FUNC_DECL typename vecType::bool_type lessThan(vecType const & x, vecType const & y); /// Returns the component-wise comparison of result x <= y. /// @@ -64,7 +64,7 @@ namespace glm /// @see GLSL lessThanEqual man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template - typename vecType::bool_type lessThanEqual(vecType const & x, vecType const & y); + GLM_FUNC_DECL typename vecType::bool_type lessThanEqual(vecType const & x, vecType const & y); /// Returns the component-wise comparison of result x > y. /// @@ -73,7 +73,7 @@ namespace glm /// @see GLSL greaterThan man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template - typename vecType::bool_type greaterThan(vecType const & x, vecType const & y); + GLM_FUNC_DECL typename vecType::bool_type greaterThan(vecType const & x, vecType const & y); /// Returns the component-wise comparison of result x >= y. /// @@ -82,7 +82,7 @@ namespace glm /// @see GLSL greaterThanEqual man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template - typename vecType::bool_type greaterThanEqual(vecType const & x, vecType const & y); + GLM_FUNC_DECL typename vecType::bool_type greaterThanEqual(vecType const & x, vecType const & y); /// Returns the component-wise comparison of result x == y. /// @@ -91,7 +91,7 @@ namespace glm /// @see GLSL equal man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template - typename vecType::bool_type equal(vecType const & x, vecType const & y); + GLM_FUNC_DECL typename vecType::bool_type equal(vecType const & x, vecType const & y); /// Returns the component-wise comparison of result x != y. /// @@ -100,7 +100,7 @@ namespace glm /// @see GLSL notEqual man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template - typename vecType::bool_type notEqual(vecType const & x, vecType const & y); + GLM_FUNC_DECL typename vecType::bool_type notEqual(vecType const & x, vecType const & y); /// Returns true if any component of x is true. /// @@ -109,7 +109,7 @@ namespace glm /// @see GLSL any man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template