Upstream merge.

This commit is contained in:
Maciej Suminski 2014-02-21 11:05:28 +01:00
commit 151826b206
360 changed files with 8603 additions and 7931 deletions

View File

@ -1,5 +1,6 @@
boost_root
.downloads-by-cmake
Build
common/netlist_keywords.*
common/netlist_lexer.h
common/pcb_plot_params_lexer.h

View File

@ -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( "\\" ) );

View File

@ -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 );
};

View File

@ -48,6 +48,9 @@
# include <GL/glu.h>
#endif
#define KISYS3DMOD "KISYS3DMOD"
#include <3d_struct.h>
class EDA_3D_CANVAS;

View File

@ -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 )

View File

@ -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 <dick@softplc.com>
# 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
#-----<configure>----------------------------------------------------------------
set( PCRE_RELEASE 8.34 )
set( PCRE_MD5 eb34b2c9c727fd64940d6fd9a00995eb ) # re-calc this on every RELEASE change
set( PCRE_ROOT "${PROJECT_SOURCE_DIR}/pcre_root" )
#-----</configure>---------------------------------------------------------------
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
)

View File

@ -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 <dick@softplc.com>
# 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
#-----<configure>----------------------------------------------------------------
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" )
#-----</configure>---------------------------------------------------------------
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)
# <SOURCE_DIR> = ${PREFIX}/src/glew
# There is a Bazaar 'boost scratch repo' in <SOURCE_DIR>/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 <SOURCE_DIR> 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
)

View File

@ -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 <dick@softplc.com>
# 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
#-----<configure>----------------------------------------------------------------
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" )
#-----</configure>---------------------------------------------------------------
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 )
# <SOURCE_DIR> = ${PREFIX}/src/libwx
# There is a Bazaar 'boost scratch repo' in <SOURCE_DIR>/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 <SOURCE_DIR> 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 <SOURCE_DIR>
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 <SOURCE_DIR>
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
)

View File

@ -11,32 +11,40 @@ Contribute to KiCad (under Linux)
2) initialize Bazaar:
bzr whoami "John Doe <john.doe@gmail.com>"
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 <kicad_sources>/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.

View File

@ -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 <kicadSource>
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=<finallInstallDir>
If windows, run the following command:
On windows, run the following command:
cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DwxWidgets_ROOT_DIR=<wxInstallDir> ../../
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=<wxInstallDir> ../../
where <wxInstallDir> is <wxWidgets path>/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.

View File

@ -1,8 +1,10 @@
Compiling KiCad on Apple Mac OS X
=================================
First written: 2010-01-31
Last edited by: Jerry Jacobs <xor.gate.engineering[at]gmail[dot]com>
by: Jerry Jacobs <xor.gate.engineering[at]gmail[dot]com>
Modified at: 2014-02-07
by: Marco Serantoni <marco.serantoni[at]gmail[dot]com>
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/<rev>
cmake -DKICAD_SCRIPTING=ON -DKICAD_SCRIPTING_WXPYTHON=ON -DKICAD_SCRIPTING_MODULES=ON .
make
<rev> 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

View File

@ -2,7 +2,6 @@
include_directories(BEFORE ${INC_BEFORE})
include_directories(
../potrace
../polygon/kbool/include
../common
${INC_AFTER}
)

View File

@ -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

View File

@ -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" }};

View File

@ -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" }};

View File

@ -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 <bitmaps.h>
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x04, 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

View File

@ -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" }};

View File

@ -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" }};

View File

@ -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" }};

View File

@ -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" }};

View File

@ -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" }};

View File

@ -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" }};

View File

@ -0,0 +1,100 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps.h>
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x05, 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

View File

@ -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" }};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -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 @@
<defs
id="defs4" />
<path
style="fill:none;stroke:#0000cf;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:0.94117647000000004;stroke-miterlimit:0;stroke-dasharray:4,4;stroke-dashoffset:5.2"
d="M 4,22 22,4"
style="fill:none;stroke:#0000cf;stroke-width:2.4000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-opacity:0.94117647;stroke-dasharray:4.80000019, 2.4000001;stroke-dashoffset:6.23999975"
d="M 1,25 24.485762,1.427136"
id="path2990"
inkscape:connector-curvature="0" />
<rect
style="fill:#2ac23c;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3776"
width="5"
height="5.0000005"
x="19.5"
y="1.4999995"
ry="2.5"
rx="2.5" />
<rect
rx="2.5"
ry="2.5"
y="19.5"
x="1.5"
height="5.0000005"
width="5"
id="rect3761"
style="fill:#2ac23c;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -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">
<inkscape:grid
@ -104,34 +104,67 @@
transform="scale(0.85855393,1.1647492)"
style="font-size:10.0978241px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Garuda;-inkscape-font-specification:Garuda"
id="text3036">
<path
d="m 13.767886,1.8663839 -1.157982,3.1400741 2.32019,0 -1.162208,-3.1400741 m -0.481788,-0.8410158 0.967802,0 2.404714,6.3097316 -0.887505,0 -0.574764,-1.6186385 -2.844239,0 -0.574765,1.6186385 -0.900183,0 2.40894,-6.3097316"
style="font-size:8.65527821px;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol"
id="path2994" />
<path
d="m 18.429396,4.3218119 0,2.3117369 1.369292,0 c 0.459244,7e-7 0.79875,-0.094384 1.018516,-0.283156 C 21.03978,6.1588057 21.151071,5.8671975 21.151075,5.4755673 21.151071,5.0811233 21.03978,4.7909238 20.817204,4.604968 20.597438,4.4162002 20.257932,4.3218149 19.798688,4.3218119 l -1.369292,0 m 0,-2.594893 0,1.9017946 1.263636,0 c 0.416983,3.7e-6 0.726905,-0.077477 0.929767,-0.2324416 C 20.82847,3.2384975 20.931308,2.9990125 20.931312,2.6778162 20.931308,2.3594467 20.82847,2.1213704 20.622799,1.9635867 20.419937,1.8058137 20.110015,1.7269246 19.693032,1.7269189 l -1.263636,0 m -0.853695,-0.7015508 2.180725,0 c 0.650832,6.3e-6 1.152342,0.1352449 1.50453,0.4057161 0.35218,0.2704831 0.528272,0.6550678 0.528277,1.1537554 -5e-6,0.3859982 -0.09016,0.6931025 -0.270478,0.9213138 -0.180323,0.2282189 -0.445165,0.3705012 -0.794527,0.4268472 0.419799,0.090162 0.745217,0.278933 0.976254,0.5663121 0.233845,0.2845674 0.35077,0.6409774 0.350776,1.0692312 -6e-6,0.5634959 -0.191594,0.9987951 -0.574765,1.3058989 -0.383181,0.3071048 -0.928361,0.4606569 -1.635543,0.4606569 l -2.265249,0 0,-6.3097316"
style="font-size:8.65527821px;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol"
id="path2996" />
<path
d="m 28.08206,1.5113822 0,0.9001828 C 27.794672,2.1439102 27.487568,1.9438698 27.160746,1.8114431 26.836732,1.6790276 26.491592,1.612817 26.125324,1.6128113 c -0.721276,5.7e-6 -1.2735,0.2211771 -1.656674,0.663515 -0.383178,0.4395304 -0.574766,1.0762788 -0.574765,1.9102469 -1e-6,0.831157 0.191587,1.4679053 0.574765,1.9102469 0.383174,0.4395267 0.935398,0.6592894 1.656674,0.6592888 0.366268,6e-7 0.711408,-0.06621 1.035422,-0.1986319 0.326822,-0.1324203 0.633926,-0.3324607 0.921314,-0.6001218 l 0,0.8917303 c -0.298658,0.2028584 -0.615623,0.3550018 -0.950898,0.4564307 -0.332466,0.101429 -0.68465,0.1521435 -1.056552,0.1521436 -0.955126,-1e-7 -1.707391,-0.2916083 -2.256796,-0.8748255 -0.549408,-0.5860331 -0.824112,-1.384786 -0.824111,-2.3962611 -1e-6,-1.0142863 0.274703,-1.8130392 0.824111,-2.3962611 0.549405,-0.5860283 1.30167,-0.87904527 2.256796,-0.8790517 0.377537,6.43e-6 0.732539,0.0507209 1.065005,0.1521436 0.335274,0.098618 0.649422,0.2479436 0.942445,0.4479782"
style="font-size:8.65527821px;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol"
id="path2998" />
<g
id="g3038"
transform="translate(-6.6451187,-12.86249)">
<path
id="path2994"
style="font-size:8.65527821px;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol"
d="m 13.767886,1.8663839 -1.157982,3.1400741 2.32019,0 -1.162208,-3.1400741 m -0.481788,-0.8410158 0.967802,0 2.404714,6.3097316 -0.887505,0 -0.574764,-1.6186385 -2.844239,0 -0.574765,1.6186385 -0.900183,0 2.40894,-6.3097316"
inkscape:connector-curvature="0" />
<path
id="path2996"
style="font-size:8.65527821px;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol"
d="m 18.429396,4.3218119 0,2.3117369 1.369292,0 c 0.459244,7e-7 0.79875,-0.094384 1.018516,-0.283156 C 21.03978,6.1588057 21.151071,5.8671975 21.151075,5.4755673 21.151071,5.0811233 21.03978,4.7909238 20.817204,4.604968 20.597438,4.4162002 20.257932,4.3218149 19.798688,4.3218119 l -1.369292,0 m 0,-2.594893 0,1.9017946 1.263636,0 c 0.416983,3.7e-6 0.726905,-0.077477 0.929767,-0.2324416 C 20.82847,3.2384975 20.931308,2.9990125 20.931312,2.6778162 20.931308,2.3594467 20.82847,2.1213704 20.622799,1.9635867 20.419937,1.8058137 20.110015,1.7269246 19.693032,1.7269189 l -1.263636,0 m -0.853695,-0.7015508 2.180725,0 c 0.650832,6.3e-6 1.152342,0.1352449 1.50453,0.4057161 0.35218,0.2704831 0.528272,0.6550678 0.528277,1.1537554 -5e-6,0.3859982 -0.09016,0.6931025 -0.270478,0.9213138 -0.180323,0.2282189 -0.445165,0.3705012 -0.794527,0.4268472 0.419799,0.090162 0.745217,0.278933 0.976254,0.5663121 0.233845,0.2845674 0.35077,0.6409774 0.350776,1.0692312 -6e-6,0.5634959 -0.191594,0.9987951 -0.574765,1.3058989 -0.383181,0.3071048 -0.928361,0.4606569 -1.635543,0.4606569 l -2.265249,0 0,-6.3097316"
inkscape:connector-curvature="0" />
<path
id="path2998"
style="font-size:8.65527821px;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol"
d="m 28.08206,1.5113822 0,0.9001828 C 27.794672,2.1439102 27.487568,1.9438698 27.160746,1.8114431 26.836732,1.6790276 26.491592,1.612817 26.125324,1.6128113 c -0.721276,5.7e-6 -1.2735,0.2211771 -1.656674,0.663515 -0.383178,0.4395304 -0.574766,1.0762788 -0.574765,1.9102469 -1e-6,0.831157 0.191587,1.4679053 0.574765,1.9102469 0.383174,0.4395267 0.935398,0.6592894 1.656674,0.6592888 0.366268,6e-7 0.711408,-0.06621 1.035422,-0.1986319 0.326822,-0.1324203 0.633926,-0.3324607 0.921314,-0.6001218 l 0,0.8917303 c -0.298658,0.2028584 -0.615623,0.3550018 -0.950898,0.4564307 -0.332466,0.101429 -0.68465,0.1521435 -1.056552,0.1521436 -0.955126,-1e-7 -1.707391,-0.2916083 -2.256796,-0.8748255 -0.549408,-0.5860331 -0.824112,-1.384786 -0.824111,-2.3962611 -1e-6,-1.0142863 0.274703,-1.8130392 0.824111,-2.3962611 0.549405,-0.5860283 1.30167,-0.87904527 2.256796,-0.8790517 0.377537,6.43e-6 0.732539,0.0507209 1.065005,0.1521436 0.335274,0.098618 0.649422,0.2479436 0.942445,0.4479782"
inkscape:connector-curvature="0" />
</g>
<g
transform="scale(1.1258075,0.88825133)"
style="font-size:9.31130981px;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;font-family:Sans;-inkscape-font-specification:Sans"
id="text3034">
<path
d="m 10.361478,1.9170197 1.035592,0 0.02253,4.0359105 c 0.004,0.71195 -0.0033,1.2251621 0.260375,1.5396087 0.263697,0.3114823 0.7136,0.2988428 1.304653,0.2988421 0.588015,7e-7 0.878701,-0.050502 1.142404,-0.3619846 0.263695,-0.3144466 0.377079,-0.8066116 0.37302,-1.5185612 l -0.02253,-3.9517205 1.080648,-0.042095 0,4.147154 c -6e-6,0.8662168 -0.219755,1.5203274 -0.659248,1.9623335 -0.436472,0.4420073 -1.08208,0.6630105 -1.936825,0.6630107 -0.857783,-2e-7 -1.506421,-0.2210034 -1.945918,-0.6630107 C 10.579711,7.5845011 10.361477,6.9303905 10.361478,6.0641737 l 0,-4.147154"
style="line-height:125%;font-family:Sans;-inkscape-font-specification:Sans"
id="path3044"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccscscsccscscsc" />
<path
d="m 17.57178,7.7291671 1.083191,0.021047 0,0.9337388 -1.060662,0 m 1.029313,-1.8994729 -0.997964,0.021047 0,-0.5757372 c 0,-0.2977395 0.04876,-0.5424185 0.146299,-0.7340378 C 17.869484,5.30414 18.075002,5.0815705 18.3885,4.8280438 L 18.858745,4.4344935 C 19.05729,4.2782569 19.200106,4.1308599 19.28719,3.992302 19.37775,3.8537535 19.558209,3.6701574 19.558212,3.5257032 19.558209,3.2633417 19.42073,3.093185 19.190837,2.9310425 18.964419,2.7689115 18.550471,2.6878432 18.174278,2.6878373 c -0.275183,5.9e-6 -0.569522,0.051595 -0.883016,0.1547669 -0.310015,0.1031838 -0.431203,0.2324812 -0.76908,0.4299878 l 0.02253,-0.8102724 c 0.327428,-0.1680264 0.433052,-0.2933138 0.76745,-0.3758628 0.337879,-0.082536 0.686208,-0.1238069 1.04499,-0.1238136 0.640923,6.7e-6 1.334939,0.1429818 1.721588,0.4289257 0.390125,0.2859565 0.585189,0.6211979 0.585195,1.0899151 -6e-6,0.2240486 -0.130286,0.4798694 -0.255685,0.6832726 -0.125404,0.2004645 -0.457494,0.4274559 -0.770987,0.6809749 l -0.459796,0.3802847 c -0.163717,0.1385567 -0.280408,0.2476304 -0.35007,0.3272217 -0.06618,0.07665 -0.11321,0.151822 -0.141075,0.2255176 -0.0209,0.061909 -0.03658,0.1370821 -0.04703,0.2255177 -0.01049,0.08844 -0.007,0.2095219 -0.01568,0.362597 l -0.02253,0.3965628"
style="line-height:125%;font-family:Sans;-inkscape-font-specification:Sans"
id="path3046"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccsccccccccccccccccccccsc" />
<path
d="m 23.80282,3.0112083 -1.088051,2.8308424 2.180648,0 -1.092597,-2.8518899 m -0.518306,-1.0731411 1.041157,0 2.586981,6.7879812 -0.954773,0 -0.730974,-1.9728467 -2.812003,-0.021047 -0.753502,1.9938942 -0.968412,0 2.591526,-6.7879812"
style="line-height:125%;font-family:Sans;-inkscape-font-specification:Sans"
id="path3048"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccc" />
</g>
</g>
<g
transform="scale(0.88744146,1.1268349)"
transform="matrix(0.88744146,0,0,1.1268349,1.2629817,0)"
style="font-size:9.76912498px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Garuda;-inkscape-font-specification:Garuda"
id="text3040">
<path
d="m 13.751739,21.490968 1.349252,0 0,-4.656962 -1.467822,0.294383 0,-0.75231 1.459644,-0.294382 0.825906,0 0,5.409271 1.349251,0 0,0.695069 -3.516231,0 0,-0.695069"
d="m 14.291563,21.490968 1.349252,0 0,-4.656962 -1.467822,0.294383 0,-0.75231 1.459644,-0.294382 0.825906,0 0,5.409271 1.349251,0 0,0.695069 -3.516231,0 0,-0.695069"
style="font-size:8.37353611px;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol"
id="path3001" />
id="path3001"
inkscape:connector-curvature="0" />
<path
d="m 19.651648,21.490968 2.882491,0 0,0.695069 -3.876031,0 0,-0.695069 c 0.313461,-0.324364 0.740042,-0.759123 1.279744,-1.304276 0.542424,-0.547876 0.883144,-0.900861 1.022161,-1.058958 0.264395,-0.297105 0.448384,-0.547874 0.551966,-0.75231 0.106301,-0.207154 0.159453,-0.410223 0.159457,-0.609208 -4e-6,-0.32436 -0.114485,-0.588759 -0.343446,-0.793196 -0.226241,-0.204426 -0.521986,-0.306642 -0.887235,-0.306648 -0.258949,6e-6 -0.532888,0.04498 -0.821817,0.134925 -0.286206,0.08996 -0.592853,0.226244 -0.919944,0.408864 l 0,-0.834082 c 0.332542,-0.133557 0.643278,-0.23441 0.93221,-0.30256 0.288929,-0.06814 0.553328,-0.10221 0.793197,-0.102216 0.632373,6e-6 1.136638,0.1581 1.512797,0.474283 0.37615,0.316193 0.564228,0.738686 0.564232,1.267478 -4e-6,0.250774 -0.04771,0.489278 -0.143102,0.715512 -0.09268,0.223516 -0.26304,0.487915 -0.51108,0.793197 -0.06815,0.07905 -0.284846,0.308013 -0.650094,0.686891 -0.365255,0.376157 -0.880423,0.903591 -1.545506,1.582304"
d="m 19.897022,21.471644 2.882491,0 0,0.695069 -3.876031,0 0,-0.695069 c 0.313461,-0.324364 0.740042,-0.759123 1.279744,-1.304276 0.542424,-0.547876 0.883144,-0.900861 1.022161,-1.058958 0.264395,-0.297105 0.448384,-0.547874 0.551966,-0.75231 0.106301,-0.207154 0.159453,-0.410223 0.159457,-0.609208 -4e-6,-0.32436 -0.114485,-0.588759 -0.343446,-0.793196 -0.226241,-0.204426 -0.521986,-0.306642 -0.887235,-0.306648 -0.258949,6e-6 -0.532888,0.04498 -0.821817,0.134925 -0.286206,0.08996 -0.592853,0.226244 -0.919944,0.408864 l 0,-0.834082 c 0.332542,-0.133557 0.643278,-0.23441 0.93221,-0.30256 0.288929,-0.06814 0.553328,-0.10221 0.793197,-0.102216 0.632373,6e-6 1.136638,0.1581 1.512797,0.474283 0.37615,0.316193 0.564228,0.738686 0.564232,1.267478 -4e-6,0.250774 -0.04771,0.489278 -0.143102,0.715512 -0.09268,0.223516 -0.26304,0.487915 -0.51108,0.793197 -0.06815,0.07905 -0.284846,0.308013 -0.650094,0.686891 -0.365255,0.376157 -0.880423,0.903591 -1.545506,1.582304"
style="font-size:8.37353611px;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol"
id="path3003" />
id="path3003"
inkscape:connector-curvature="0" />
<path
d="m 26.774059,18.894681 c 0.395232,0.0845 0.703243,0.260313 0.924033,0.527435 0.223508,0.267127 0.335264,0.596944 0.335269,0.989451 -5e-6,0.602394 -0.207162,1.068499 -0.621474,1.398315 -0.414319,0.329817 -1.003082,0.494726 -1.766292,0.494726 -0.256224,0 -0.520622,-0.0259 -0.793197,-0.07769 -0.269851,-0.04906 -0.549241,-0.124022 -0.838171,-0.224875 l 0,-0.797285 c 0.228963,0.133563 0.479733,0.234416 0.75231,0.30256 0.272574,0.06814 0.557416,0.102216 0.854526,0.102216 0.517891,0 0.911763,-0.102216 1.181617,-0.306648 0.272572,-0.204431 0.40886,-0.501539 0.408864,-0.891324 -4e-6,-0.359798 -0.126752,-0.640551 -0.380244,-0.84226 -0.250773,-0.204429 -0.601033,-0.306645 -1.05078,-0.306648 l -0.711424,0 0,-0.678714 0.744133,0 c 0.406135,3e-6 0.716872,-0.08041 0.93221,-0.24123 0.215331,-0.163542 0.322999,-0.397957 0.323003,-0.703246 -4e-6,-0.313458 -0.11176,-0.553325 -0.335269,-0.719601 -0.22079,-0.168992 -0.53834,-0.25349 -0.952653,-0.253496 -0.226241,6e-6 -0.468833,0.02454 -0.727778,0.0736 -0.258949,0.04907 -0.543791,0.12539 -0.854526,0.228964 l 0,-0.735956 c 0.313461,-0.08722 0.60648,-0.152636 0.879058,-0.196255 0.275299,-0.0436 0.534246,-0.06541 0.776841,-0.06542 0.626922,6e-6 1.12301,0.143109 1.488265,0.429308 0.365248,0.283484 0.547874,0.667816 0.547878,1.152996 -4e-6,0.337999 -0.09677,0.624203 -0.290293,0.858615 -0.193533,0.231693 -0.468835,0.392513 -0.825906,0.482459"
d="m 26.675909,18.894681 c 0.395232,0.0845 0.703243,0.260313 0.924033,0.527435 0.223508,0.267127 0.335264,0.596944 0.335269,0.989451 -5e-6,0.602394 -0.207162,1.068499 -0.621474,1.398315 -0.414319,0.329817 -1.003082,0.494726 -1.766292,0.494726 -0.256224,0 -0.520622,-0.0259 -0.793197,-0.07769 -0.269851,-0.04906 -0.549241,-0.124022 -0.838171,-0.224875 l 0,-0.797285 c 0.228963,0.133563 0.479733,0.234416 0.75231,0.30256 0.272574,0.06814 0.557416,0.102216 0.854526,0.102216 0.517891,0 0.911763,-0.102216 1.181617,-0.306648 0.272572,-0.204431 0.40886,-0.501539 0.408864,-0.891324 -4e-6,-0.359798 -0.126752,-0.640551 -0.380244,-0.84226 -0.250773,-0.204429 -0.601033,-0.306645 -1.05078,-0.306648 l -0.711424,0 0,-0.678714 0.744133,0 c 0.406135,3e-6 0.716872,-0.08041 0.93221,-0.24123 0.215331,-0.163542 0.322999,-0.397957 0.323003,-0.703246 -4e-6,-0.313458 -0.11176,-0.553325 -0.335269,-0.719601 -0.22079,-0.168992 -0.53834,-0.25349 -0.952653,-0.253496 -0.226241,6e-6 -0.468833,0.02454 -0.727778,0.0736 -0.258949,0.04907 -0.543791,0.12539 -0.854526,0.228964 l 0,-0.735956 c 0.313461,-0.08722 0.60648,-0.152636 0.879058,-0.196255 0.275299,-0.0436 0.534246,-0.06541 0.776841,-0.06542 0.626922,6e-6 1.12301,0.143109 1.488265,0.429308 0.365248,0.283484 0.547874,0.667816 0.547878,1.152996 -4e-6,0.337999 -0.09677,0.624203 -0.290293,0.858615 -0.193533,0.231693 -0.468835,0.392513 -0.825906,0.482459"
style="font-size:8.37353611px;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol"
id="path3005" />
id="path3005"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -1,390 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
style="enable-background:new"
height="26"
width="26"
version="1.0"
id="svg2"
inkscape:version="0.48.4 r9939"
sodipodi:docname="apply.svg">
<metadata
id="metadata99">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1119"
inkscape:window-height="823"
id="namedview97"
showgrid="true"
borderlayer="true"
inkscape:zoom="28.639971"
inkscape:cx="13.118885"
inkscape:cy="13.473811"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg2">
<inkscape:grid
type="xygrid"
id="grid3080"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
dotted="false" />
</sodipodi:namedview>
<defs
id="defs4">
<linearGradient
id="a">
<stop
stop-color="#fff"
offset="0"
id="stop7" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop9" />
</linearGradient>
<linearGradient
id="c">
<stop
stop-color="#f0ff80"
offset="0"
id="stop12" />
<stop
stop-color="#f0ff80"
stop-opacity="0"
offset="1"
id="stop14" />
</linearGradient>
<radialGradient
id="ad"
fy="99.884003"
gradientUnits="userSpaceOnUse"
cy="77.542"
cx="54.537998"
gradientTransform="matrix(1.3117,5.847e-8,-4.3853e-8,0.98379,-16.906,1.3137)"
r="48">
<stop
stop-color="#66f515"
offset="0"
id="stop17" />
<stop
stop-color="#002e00"
offset="1"
id="stop19" />
</radialGradient>
<linearGradient
id="y"
y2="30.849001"
gradientUnits="userSpaceOnUse"
x2="89.091003"
gradientTransform="translate(0,4)"
y1="103.9"
x1="89.091003">
<stop
stop-color="#003100"
offset="0"
id="stop22" />
<stop
stop-color="#008c00"
offset="1"
id="stop24" />
</linearGradient>
<linearGradient
id="z"
y2="89.995003"
gradientUnits="userSpaceOnUse"
x2="83.324997"
gradientTransform="translate(-2.3932e-5,4)"
y1="24.062"
x1="83.324997">
<stop
stop-color="#bfffbf"
offset="0"
id="stop27" />
<stop
stop-color="#bfffbf"
stop-opacity="0"
offset="1"
id="stop29" />
</linearGradient>
<radialGradient
id="ae"
fx="53.16"
fy="87.081001"
gradientUnits="userSpaceOnUse"
cy="95.459"
cx="52.792"
gradientTransform="matrix(0.56466,8.5323e-8,-1.3866e-7,0.91764,24.424,0.14392)"
r="52">
<stop
stop-color="#001400"
offset="0"
id="stop32" />
<stop
stop-color="#001400"
stop-opacity="0"
offset="1"
id="stop34" />
</radialGradient>
<radialGradient
id="b"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
cy="29.375"
cx="99.765999"
gradientTransform="matrix(1.9647,3.4243e-7,-1.0415e-6,5.9753,-96.241,-146.15)"
r="3.0156" />
<radialGradient
id="af"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
cy="29.375"
cx="99.765999"
gradientTransform="matrix(1.9647,3.4243e-7,-1.0415e-6,5.9753,-167.24,-126.15)"
r="3.0156" />
<linearGradient
id="aa"
y2="47.379002"
xlink:href="#c"
gradientUnits="userSpaceOnUse"
x2="71.603996"
y1="96.884003"
x1="71.603996" />
<filter
id="ai"
color-interpolation-filters="sRGB">
<feGaussianBlur
stdDeviation="0.425"
id="feGaussianBlur40" />
</filter>
<linearGradient
id="ab"
y2="46.277"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
x2="77.138"
y1="74.838997"
x1="87.532997" />
<linearGradient
id="ac"
y2="69.837997"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
x2="83.324997"
gradientTransform="translate(0,4)"
y1="24.062"
x1="83.324997" />
<radialGradient
id="ag"
xlink:href="#c"
gradientUnits="userSpaceOnUse"
cy="29.375"
cx="99.765999"
gradientTransform="matrix(1.9647,3.4243e-7,-1.0415e-6,5.9753,-167.24,-126.15)"
r="3.0156" />
<filter
id="aj"
color-interpolation-filters="sRGB">
<feGaussianBlur
stdDeviation="0.4605"
id="feGaussianBlur46" />
</filter>
<radialGradient
id="ah"
xlink:href="#a"
gradientUnits="userSpaceOnUse"
cy="51.919998"
cx="53.632999"
gradientTransform="matrix(1.0961,0.087912,-0.10023,1.2497,1.0599,-18.687)"
r="52" />
<filter
id="ak"
color-interpolation-filters="sRGB">
<feBlend
mode="lighten"
in2="BackgroundImage"
id="feBlend50" />
</filter>
<filter
id="al"
height="1.2058001"
width="1.3647"
color-interpolation-filters="sRGB"
y="-0.10289"
x="-0.18233">
<feGaussianBlur
stdDeviation="0.45819706"
id="feGaussianBlur53" />
</filter>
<filter
id="am"
height="1.2058001"
width="1.3647"
color-interpolation-filters="sRGB"
y="-0.10289"
x="-0.18233">
<feGaussianBlur
stdDeviation="0.45819706"
id="feGaussianBlur56" />
</filter>
<filter
id="v"
height="1.3703001"
width="1.2077"
color-interpolation-filters="sRGB"
y="-0.18513"
x="-0.10383">
<feGaussianBlur
stdDeviation="0.45819702"
id="feGaussianBlur59" />
</filter>
<filter
id="w"
height="1.2058001"
width="1.3647"
color-interpolation-filters="sRGB"
y="-0.10289"
x="-0.18233">
<feGaussianBlur
stdDeviation="0.45819706"
id="feGaussianBlur62" />
</filter>
<filter
id="x"
height="1.3703001"
width="1.2077"
color-interpolation-filters="sRGB"
y="-0.18513"
x="-0.10383">
<feGaussianBlur
stdDeviation="0.45819702"
id="feGaussianBlur65" />
</filter>
<radialGradient
inkscape:collect="always"
xlink:href="#a"
id="radialGradient3076"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.9647,3.4243e-7,-1.0415e-6,5.9753,-96.241,-146.15)"
cx="99.765999"
cy="29.375"
r="3.0156" />
<radialGradient
inkscape:collect="always"
xlink:href="#a"
id="radialGradient3078"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.9647,3.4243e-7,-1.0415e-6,5.9753,-96.241,-146.15)"
cx="99.765999"
cy="29.375"
r="3.0156" />
</defs>
<g
transform="matrix(0.24502174,0,0,0.25091083,-2.5625062,-3.5450263)"
id="g67">
<path
d="M 54.394,74.154 C 46.246,65.804 28.631,47.75 28.631,47.75 L 16,60.698 54.394,100.05 112,41 99.367,28.053 54.394,74.154 z"
id="path69"
inkscape:connector-curvature="0"
style="fill:none;stroke:#004d00;stroke-width:8.10000038;stroke-linecap:round;stroke-linejoin:round;filter:url(#aj)" />
<path
d="M 54.394,74.154 C 46.246,65.804 28.631,47.75 28.631,47.75 L 16,60.698 54.394,100.05 112,41 99.367,28.053 54.394,74.154 z"
id="path71"
inkscape:connector-curvature="0"
style="fill:none;stroke:url(#y);stroke-width:8;stroke-linecap:round;stroke-linejoin:round" />
<path
d="M 54.394,74.154 C 46.246,65.804 28.631,47.75 28.631,47.75 L 16,60.698 54.394,100.05 112,41 99.367,28.053 54.394,74.154 z"
id="path73"
inkscape:connector-curvature="0"
style="opacity:0.28570999;fill:none;stroke:url(#ah);stroke-width:8;stroke-linecap:round;stroke-linejoin:round;filter:url(#ak)" />
<path
d="m 28.406,44.031 c -0.14989,-0.0024 -0.28658,0.01658 -0.4375,0.03125 -0.82719,0.08205 -1.5953,0.42708 -2.2188,0.96875 l 1.6875,9.6875 c 0.11092,-0.11368 0.85037,-0.84818 0.9375,-0.9375 l 0.375,0.375 3.0312,-8.3438 -0.5625,-0.5625 c -0.74135,-0.75959 -1.7633,-1.2019 -2.8125,-1.2188 z"
transform="matrix(1,0,0,-1,26,147.75)"
id="path75"
inkscape:connector-curvature="0"
style="opacity:0.40951999;fill:url(#ag);filter:url(#al)" />
<path
d="m 99.406,24.031 c -0.14989,-0.0024 -0.28658,0.01658 -0.4375,0.03125 -0.82719,0.08205 -1.5953,0.42708 -2.2188,0.96875 l 1.6875,9.6875 c 0.11092,-0.11368 0.85037,-0.84818 0.9375,-0.9375 l 0.375,0.375 3.0312,-8.3438 -0.5625,-0.5625 c -0.74135,-0.75959 -1.7633,-1.2019 -2.8125,-1.2188 z"
transform="matrix(-0.34202,0.93969,0.93969,0.34202,24.21,-42.203)"
id="path77"
inkscape:connector-curvature="0"
style="opacity:0.2381;fill:url(#radialGradient3076);filter:url(#v)" />
<path
d="m 28.406,44.031 c -0.14989,-0.0024 -0.28658,0.01658 -0.4375,0.03125 -0.82719,0.08205 -1.5953,0.42708 -2.2188,0.96875 l 1.6875,9.6875 c 0.11092,-0.11368 0.85037,-0.84818 0.9375,-0.9375 l 0.375,0.375 3.0312,-8.3438 -0.5625,-0.5625 c -0.74135,-0.75959 -1.7633,-1.2019 -2.8125,-1.2188 z"
id="path79"
inkscape:connector-curvature="0"
style="opacity:0.77619001;fill:url(#af);filter:url(#am)" />
<path
d="m 99.406,24.031 c -0.14989,-0.0024 -0.28658,0.01658 -0.4375,0.03125 -0.82719,0.08205 -1.5953,0.42708 -2.2188,0.96875 l 1.6875,9.6875 c 0.11092,-0.11368 0.85037,-0.84818 0.9375,-0.9375 l 0.375,0.375 3.0312,-8.3438 -0.5625,-0.5625 c -0.74135,-0.75959 -1.7633,-1.2019 -2.8125,-1.2188 z"
transform="matrix(0.34202,0.93969,-0.93969,0.34202,104.53,-62.203)"
id="path81"
inkscape:connector-curvature="0"
style="opacity:0.37142998;fill:url(#radialGradient3078);filter:url(#x)" />
<path
d="m 99.406,24.031 c -0.14989,-0.0024 -0.28658,0.01658 -0.4375,0.03125 -0.82719,0.08205 -1.5953,0.42708 -2.2188,0.96875 l 1.6875,9.6875 c 0.11092,-0.11368 0.85037,-0.84818 0.9375,-0.9375 l 0.375,0.375 3.0312,-8.3438 -0.5625,-0.5625 c -0.74135,-0.75959 -1.7633,-1.2019 -2.8125,-1.2188 z"
transform="translate(-2.3932e-5,0)"
id="path83"
inkscape:connector-curvature="0"
style="opacity:0.87142998;fill:url(#b);filter:url(#w)" />
<path
d="M 54.394,74.154 C 46.246,65.804 28.631,47.75 28.631,47.75 L 16,60.698 54.394,100.05 112,41 99.367,28.053 54.394,74.154 z"
id="path85"
inkscape:connector-curvature="0"
style="opacity:0.28570999;fill:none;stroke:url(#ae);stroke-width:8;stroke-linecap:round;stroke-linejoin:round" />
<path
d="M 54.394,74.154 C 46.246,65.804 28.631,47.75 28.631,47.75 L 16,60.698 54.394,100.05 112,41 99.367,28.053 54.394,74.154 z"
id="path87"
inkscape:connector-curvature="0"
style="fill:url(#ad)" />
<path
d="m 99.375,28.062 c -3e-6,0 -35.257,36.14 -44.969,46.094 C 46.258,65.806 28.625,47.75 28.625,47.75 L 16,60.688 32.469,77.563 c 0.18891,4.87e-4 0.37338,0 0.5625,0 17.53,0 34.136,-2.0931 49.031,-5.8438 l 29.937,-30.719 -12.625,-12.938 z"
id="path89"
inkscape:connector-curvature="0"
style="fill:url(#z)" />
<path
d="M 54.394,74.154 C 46.246,65.804 28.631,47.75 28.631,47.75 L 16,60.698 54.394,100.05 112,41 99.367,28.053 54.394,74.154 z"
id="path91"
inkscape:connector-curvature="0"
style="fill:none;stroke:url(#aa);filter:url(#ai)" />
<path
d="m 99.375,28.062 c 0,0 -0.40024,0.43134 -0.40625,0.4375 l 12.188,12.281 -30,30.219 c -14.927,3.6876 -31.057,6.2187 -48.625,6.2188 -0.12636,0 -0.25009,-10e-7 -0.375,0 l 0.3125,0.34375 c 0.18891,4.87e-4 0.37338,0 0.5625,0 17.53,0 34.136,-2.0931 49.031,-5.8438 l 29.936,-30.719 -12.625,-12.938 z"
transform="translate(-2.3932e-5,0)"
id="path93"
inkscape:connector-curvature="0"
style="fill:url(#ab)" />
<path
d="m 99.375,28.062 c -3e-6,0 -35.257,36.14 -44.969,46.094 C 46.258,65.806 28.625,47.75 28.625,47.75 L 16,60.688 l 0.5,0.5 12.125,-12.438 c 0,0 17.633,18.056 25.781,26.406 9.712,-9.954 44.969,-46.094 44.969,-46.094 L 111.5,41.5 112,41 99.375,28.062 z"
transform="translate(-2.3932e-5,0)"
id="path95"
inkscape:connector-curvature="0"
style="fill:url(#ac)" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

View File

@ -8,11 +8,11 @@
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="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">
<metadata
id="metadata33">
@ -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">
<inkscape:grid
type="xygrid"
id="grid2992"
empspacing="1"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<defs
id="defs4">
<linearGradient
id="a"
y2="73.399"
y2="73.399002"
gradientUnits="userSpaceOnUse"
x2="72.999"
x2="72.999001"
gradientTransform="matrix(0.25365,0,0,0.2205,4.7206034,0.98497864)"
y1="16.369"
x1="23.984">
y1="16.368999"
x1="23.983999">
<stop
stop-color="#fff"
offset="0"
@ -71,48 +81,43 @@
xlink:href="#a"
id="linearGradient2824"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.3154331,0,0,0.30075853,-0.90210036,-0.68623611)"
x1="23.984"
y1="16.369"
x2="72.999"
y2="73.399" />
gradientTransform="matrix(0.19611083,0,0,0.17490217,-2.6221466,-1.3587275)"
x1="23.983999"
y1="16.368999"
x2="72.999001"
y2="73.399002" />
</defs>
<rect
rx="7.6828136"
ry="7.6765027"
height="44.727772"
width="39.518372"
y="1.6953347"
x="4.4109545"
rx="4.7765532"
ry="4.464169"
height="26.010847"
width="24.569334"
y="0.026244164"
x="0.68108183"
id="rect15"
style="fill:none;stroke:#000000;stroke-width:2.51595616;stroke-linejoin:round;stroke-opacity:0.0657895" />
style="fill:none;stroke:#000000;stroke-width:1.51282549;stroke-linejoin:round;stroke-opacity:0.0657895" />
<rect
rx="7.6828136"
ry="7.6765027"
height="44.727772"
width="39.518372"
y="1.6653272"
x="4.3644452"
rx="4.7765532"
ry="4.464169"
height="26.010847"
width="24.569334"
y="0.0087932367"
x="0.65216607"
id="rect17"
style="fill:#bab5ab;fill-opacity:0.44298245;fill-rule:evenodd;stroke:#000000;stroke-width:1.25797808;stroke-opacity:0.04385962" />
style="fill:#bab5ab;fill-opacity:0.44298245;fill-rule:evenodd;stroke:#000000;stroke-width:0.75641274;stroke-opacity:0.04385962" />
<path
d="m 36.828749,44.887397 -25.411237,0 c -3.9079388,0 -5.8215534,-1.912033 -5.8215534,-5.816709 0,0 9.2693684,-22.303872 37.0535984,-25.70565 l 0,25.70565 c 0,3.904676 -1.913616,5.816709 -5.821555,5.816709 z"
d="m 20.835847,25.144019 -15.7986535,0 c -2.429641,0 -3.6193718,-1.111918 -3.6193718,-3.38263 0,0 5.7629448,-12.9705235 23.0369363,-14.9487827 l 0,14.9487827 c 0,2.270712 -1.189733,3.38263 -3.619374,3.38263 z"
id="path19"
style="fill:#ffffff;fill-opacity:0.27935001;fill-rule:evenodd" />
style="fill:#ffffff;fill-opacity:0.27935001;fill-rule:evenodd"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;stroke-width:1pt"
id="path23"
d="m 41.986992,31.946113 -3.841853,0 c -0.594242,0 -1.070639,0.07596 -1.429197,0.227904 -0.17417,0.05842 -0.327839,0.128568 -0.461048,0.210363 -0.133168,0.08183 -0.261238,0.198684 -0.384186,0.350609 -0.338086,0.350608 -0.583965,0.783045 -0.737647,1.297272 l -0.09228,0.420743 -0.03081,0.473331 0,0.368151 6.977006,0 0,2.24392 -6.977006,0 0,5.697416 -2.581783,0 0,-6.819467 c 0,-0.596035 0.01541,-1.116129 0.04621,-1.560243 0.0308,-0.455806 0.08191,-0.853158 0.153681,-1.19209 0.215128,-1.121979 0.665927,-2.039442 1.352365,-2.752354 0.430296,-0.455807 0.95279,-0.788893 1.567435,-0.999255 0.614715,-0.210361 1.393336,-0.315558 2.33592,-0.315558 l 4.103232,0 0,2.349098 z m -22.067939,-2.349634 6.346899,0 c 1.608437,0 2.832771,0.58436 3.672864,1.75308 0.840121,1.168722 1.260182,2.857533 1.260182,5.066332 0,2.185449 -0.420061,3.868518 -1.260182,5.048864 -0.829843,1.180397 -2.054179,1.770605 -3.672864,1.770605 l -6.346613,0 0,-13.638934 z m 2.48953,11.307306 3.027382,0 c 1.004013,0 1.746815,-0.368152 2.228291,-1.104436 0.481536,-0.747979 0.722288,-1.875786 0.722288,-3.383437 0,-1.507654 -0.230517,-2.629702 -0.691552,-3.365969 -0.450811,-0.736302 -1.203806,-1.104436 -2.259041,-1.104436 l -3.027381,0 0,8.958205 z m -12.002618,-2.54217 0,4.87362 -2.5826362,0 0,-13.638934 7.1767412,0 c 1.106459,0 1.982427,0.373979 2.627911,1.121975 0.64545,0.736285 0.968179,1.823198 0.968179,3.260789 0,1.425825 -0.322729,2.512755 -0.968179,3.260788 -0.64544,0.747979 -1.521452,1.121976 -2.627911,1.121976 l -4.59496,0 z m 0,-6.416214 0,4.084584 3.426574,0 c 0.56348,0 1.024513,-0.16362 1.383101,-0.490856 0.358589,-0.338931 0.537868,-0.859007 0.537868,-1.560243 0,-0.689541 -0.179279,-1.197938 -0.537868,-1.525175 -0.348653,-0.338719 -0.809628,-0.508078 -1.383357,-0.508078 l -3.427002,0 z" />
<path
style="stroke-width:1pt;stroke:none;stroke-opacity:1;fill:#636363;fill-opacity:1"
id="path25"
d="m 42.247516,32.243832 -3.841991,0 c -0.594245,0 -1.07064,0.07596 -1.429198,0.227901 -0.17417,0.05842 -0.327839,0.128555 -0.461048,0.210362 -0.133167,0.08183 -0.261241,0.198684 -0.384185,0.350609 -0.338087,0.350609 -0.58398,0.783046 -0.737663,1.297274 l -0.09228,0.42074 -0.03081,0.473334 0,0.368148 6.977006,0 0,2.243921 -6.977006,0 0,5.697416 -2.581782,0 0,-6.819467 c 0,-0.596035 0.01542,-1.116126 0.04607,-1.560242 0.03081,-0.455807 0.08191,-0.853159 0.153682,-1.192091 0.215128,-1.121976 0.665925,-2.03944 1.352365,-2.752354 0.430282,-0.455806 0.952788,-0.788892 1.567575,-0.999254 0.614703,-0.210361 1.393324,-0.315559 2.335919,-0.315559 l 4.103232,0 0,2.349097 z m -22.067937,-2.349637 6.346901,0 c 1.608434,0 2.83277,0.58436 3.672864,1.753079 0.840106,1.168722 1.260156,2.857536 1.260156,5.066334 0,2.185446 -0.420063,3.868519 -1.260156,5.048862 -0.829858,1.180397 -2.054179,1.770604 -3.672864,1.770604 l -6.346615,0 0,-13.638934 z m 2.489529,11.307304 3.027385,0 c 1.004028,0 1.746812,-0.368151 2.228292,-1.104436 0.48152,-0.747976 0.72227,-1.875784 0.72227,-3.383436 0,-1.507652 -0.230501,-2.629702 -0.691549,-3.365968 -0.450782,-0.736284 -1.203806,-1.104436 -2.259041,-1.104436 l -3.027386,0 0,8.958206 z m -12.002615,-2.542169 0,4.873621 -2.5826373,0 0,-13.638935 7.1767423,0 c 1.106485,0 1.982428,0.373981 2.627908,1.121978 0.645441,0.736284 0.968166,1.823196 0.968166,3.260787 0,1.425825 -0.322725,2.512755 -0.968166,3.260787 -0.645453,0.747978 -1.52145,1.121975 -2.627908,1.121975 l -4.594675,0 z m 0,-6.416214 0,4.084586 3.426573,0 c 0.56348,0 1.024511,-0.163617 1.383101,-0.490856 0.358588,-0.338933 0.537868,-0.859008 0.537868,-1.560245 0,-0.689541 -0.17928,-1.197937 -0.537868,-1.525176 -0.348793,-0.338717 -0.809629,-0.508077 -1.383357,-0.508077 l -3.427,0 z" />
<path
d="M 24.023644,5.3276251 C 29.472995,5.3738642 17.69757,31.349717 13.218834,27.889291 9.3401175,22.629767 38.060511,17.184742 35.568384,20.553782 30.488375,26.413459 20.559662,5.3276251 24.023023,5.3276251 z"
id="path27"
style="fill:#ffffff;fill-rule:evenodd;stroke:#df421e;stroke-width:1.9888792" />
<path
d="m 11.418383,2.8968687 25.411236,0 c 3.907937,0 5.821553,1.912033 5.821553,5.8167104 0,0 -26.6088,0.3036639 -37.0535969,30.6309959 l 0,-30.6350879 c 0,-3.4500612 2.3686392,-5.8167103 5.8215539,-5.8167103 z"
d="m 5.0377349,0.72498014 15.7986531,0 c 2.42964,0 3.619373,1.11191786 3.619373,3.38263126 0,0 -16.5432033,0.1765919 -23.0369345,17.8130536 l 0,-17.8154333 c 0,-2.0063375 1.4726286,-3.3826311 3.6193721,-3.3826311 z"
id="path29"
style="fill:url(#linearGradient2824);fill-rule:evenodd" />
style="fill:url(#linearGradient2824);fill-rule:evenodd"
inkscape:connector-curvature="0" />
<path
d="M 12.80163,2.0300946 C 17.684339,2.072788 7.1333622,26.05667 3.1203382,22.86161 -0.35505789,18.005414 25.378901,12.977942 23.145912,16.088629 18.594137,21.498951 9.6978454,2.0300946 12.801074,2.0300946 z"
id="path27"
style="fill:#ffffff;fill-rule:evenodd;stroke:#df421e;stroke-width:1.109;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0" />
</svg>

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -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;" />
</linearGradient>
<linearGradient
id="linearGradient4477"
inkscape:collect="always">
<stop
id="stop4479"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop4481"
offset="1"
style="stop-color:#000000;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient2366">
<stop
@ -97,66 +85,6 @@
offset="1.0000000"
id="stop2850" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4477"
id="radialGradient1527"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.237968,0,28.93278)"
cx="24.130018"
cy="37.967922"
fx="24.130018"
fy="37.967922"
r="16.528622" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2846"
id="linearGradient1529"
gradientUnits="userSpaceOnUse"
x1="27.366341"
y1="26.580296"
x2="31.335964"
y2="30.557772" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4440"
id="linearGradient1531"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.334593,0,0,1.291292,-6.973842,-7.460658)"
x1="30.65625"
y1="34"
x2="33.21875"
y2="31.0625" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2366"
id="linearGradient1533"
gradientUnits="userSpaceOnUse"
x1="18.292673"
y1="13.602121"
x2="17.500893"
y2="25.743469" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4454"
id="radialGradient1537"
gradientUnits="userSpaceOnUse"
cx="18.240929"
cy="21.817987"
fx="18.240929"
fy="21.817987"
r="8.3085051" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4467"
id="radialGradient1539"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.592963,0,0,2.252104,-25.05975,-18.941)"
cx="15.414371"
cy="13.078408"
fx="15.414371"
fy="13.078408"
r="6.65625" />
<radialGradient
id="aigrd2-8"
cx="20.892099"
@ -338,18 +266,279 @@
fx="8.824419"
fy="3.7561285"
r="37.751713" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2846-1-5"
id="linearGradient2730-7"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,1,48.18409,0)"
x1="27.366341"
y1="26.580296"
x2="31.335964"
y2="30.557772" />
<linearGradient
id="linearGradient2846-1-5">
<stop
style="stop-color:#8a8a8a;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2848-0-9" />
<stop
style="stop-color:#484848;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2850-4-6" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4440-1-1"
id="linearGradient2732-2"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1.334593,0,0,1.291292,55.15793,-7.460658)"
x1="30.65625"
y1="34"
x2="33.21875"
y2="31.0625" />
<linearGradient
id="linearGradient4440-1-1">
<stop
id="stop4442-1-7"
offset="0"
style="stop-color:#7d7d7d;stop-opacity:1;" />
<stop
style="stop-color:#b1b1b1;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop4448-8-8" />
<stop
id="stop4444-6-5"
offset="1.0000000"
style="stop-color:#686868;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2366-4-4"
id="linearGradient2734-7"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,1,44.17827,0)"
x1="18.292673"
y1="13.602121"
x2="17.500893"
y2="25.743469" />
<linearGradient
id="linearGradient2366-4-4">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop2368-3-1" />
<stop
id="stop2374-4-8"
offset="0.50000000"
style="stop-color:#ffffff;stop-opacity:0.21904762;" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2370-7-5" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4454-7-7"
id="radialGradient2736-9"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,1,43.352,0)"
cx="18.240929"
cy="21.817987"
fx="18.240929"
fy="21.817987"
r="8.3085051" />
<linearGradient
id="linearGradient4454-7-7">
<stop
id="stop4456-0-5"
offset="0.0000000"
style="stop-color:#729fcf;stop-opacity:0.20784314;" />
<stop
id="stop4458-7-3"
offset="1.0000000"
style="stop-color:#729fcf;stop-opacity:0.67619050;" />
</linearGradient>
<radialGradient
r="6.65625"
fy="13.078408"
fx="15.414371"
cy="13.078408"
cx="15.414371"
gradientTransform="matrix(2.592963,0,0,2.252104,-25.05976,-18.941)"
gradientUnits="userSpaceOnUse"
id="radialGradient3411"
xlink:href="#linearGradient4467-4-8"
inkscape:collect="always" />
<linearGradient
id="linearGradient4467-4-8">
<stop
id="stop4469-5-3"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
id="stop4471-3-1"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:0.24761905;" />
</linearGradient>
<radialGradient
r="6.65625"
fy="13.078408"
fx="15.414371"
cy="13.078408"
cx="15.414371"
gradientTransform="matrix(2.592963,0,0,2.252104,-25.05976,-18.941)"
gradientUnits="userSpaceOnUse"
id="radialGradient3143"
xlink:href="#linearGradient4467-4-8"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2846-1-5"
id="linearGradient3953"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,1,48.18409,0)"
x1="27.366341"
y1="26.580296"
x2="31.335964"
y2="30.557772" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4440-1-1"
id="linearGradient3955"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1.334593,0,0,1.291292,55.15793,-7.460658)"
x1="30.65625"
y1="34"
x2="33.21875"
y2="31.0625" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2366-4-4"
id="linearGradient3957"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,1,44.17827,0)"
x1="18.292673"
y1="13.602121"
x2="17.500893"
y2="25.743469" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4454-7-7"
id="radialGradient3959"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,1,43.352,0)"
cx="18.240929"
cy="21.817987"
fx="18.240929"
fy="21.817987"
r="8.3085051" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4467-4-8"
id="radialGradient3961"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.592963,0,0,2.252104,-25.05976,-18.941)"
cx="15.414371"
cy="13.078408"
fx="15.414371"
fy="13.078408"
r="6.65625" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4467-4-8"
id="radialGradient3964"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1.1830991,0,0,1.0154904,7.797398,16.499809)"
cx="15.414371"
cy="13.078408"
fx="15.414371"
fy="13.078408"
r="6.65625" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4440-1-1"
id="linearGradient3970"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.60893882,0,0,0.58225314,4.761172,21.67638)"
x1="30.65625"
y1="34"
x2="33.21875"
y2="31.0625" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2846-1-5"
id="linearGradient3974"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.45627305,0,0,0.45090742,1.5791967,25.040446)"
x1="27.366341"
y1="26.580296"
x2="31.335964"
y2="30.557772" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2846-1-5"
id="linearGradient3985"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.45627305,0,0,0.45090742,1.5791967,25.040446)"
x1="27.366341"
y1="26.580296"
x2="31.335964"
y2="30.557772" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4440-1-1"
id="linearGradient3987"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.60893882,0,0,0.58225314,4.761172,21.67638)"
x1="30.65625"
y1="34"
x2="33.21875"
y2="31.0625" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2366-4-4"
id="linearGradient3989"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,1,44.17827,0)"
x1="18.292673"
y1="13.602121"
x2="17.500893"
y2="25.743469" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4454-7-7"
id="radialGradient3991"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,1,43.352,0)"
cx="18.240929"
cy="21.817987"
fx="18.240929"
fy="21.817987"
r="8.3085051" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4467-4-8"
id="radialGradient3993"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1.1830991,0,0,1.0154904,7.797398,16.499809)"
cx="15.414371"
cy="13.078408"
fx="15.414371"
fy="13.078408"
r="6.65625" />
</defs>
<sodipodi:namedview
inkscape:window-y="26"
inkscape:window-y="29"
inkscape:window-x="0"
inkscape:window-height="969"
inkscape:window-width="1280"
inkscape:window-height="849"
inkscape:window-width="1600"
inkscape:document-units="px"
inkscape:grid-bbox="true"
showgrid="true"
inkscape:current-layer="layer5"
inkscape:cy="13.694933"
inkscape:cx="19.492108"
inkscape:cy="12.288442"
inkscape:cx="8.4435897"
inkscape:zoom="22.627416"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
@ -364,7 +553,7 @@
<inkscape:grid
type="xygrid"
id="grid2919"
empspacing="5"
empspacing="1"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
@ -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" />
<g
id="g1772"
transform="matrix(0.39105747,0,0,0.37162201,7.9100602,31.393184)">
<path
sodipodi:type="arc"
style="opacity:0.17112301;color:#000000;fill:url(#radialGradient1527);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
id="path4475"
sodipodi:cx="24.130018"
sodipodi:cy="37.967922"
sodipodi:rx="16.528622"
sodipodi:ry="3.9332814"
d="m 40.65864,37.967922 c 0,2.172292 -7.400116,3.933282 -16.528622,3.933282 -9.128505,0 -16.5286214,-1.76099 -16.5286214,-3.933282 0,-2.172291 7.4001164,-3.933281 16.5286214,-3.933281 9.128506,0 16.528622,1.76099 16.528622,3.933281 z"
transform="matrix(1.446431,0,0,1.51999,-10.97453,-17.75168)" />
id="g3976"
transform="translate(25.279068,-0.44194166)">
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="csscccscccscczzzz"
id="path2844"
d="m 18.627569,3.1435548 c -8.13913,0 -14.7448008,6.6056711 -14.7448008,14.7448012 0,8.13913 6.6056708,14.744802 14.7448008,14.744802 3.479555,0 6.551001,-1.384393 9.073723,-3.402647 -0.205377,1.006881 -0.07803,2.035368 0.756144,2.759925 l 10.964084,9.52741 c 1.233416,1.071329 3.087462,0.93096 4.15879,-0.302457 1.071328,-1.233418 0.930959,-3.087462 -0.302457,-4.15879 L 32.313769,27.529188 c -0.671527,-0.583279 -1.492878,-0.755969 -2.306238,-0.642722 1.9867,-2.512422 3.364839,-5.548803 3.364839,-8.99811 0,-8.1391301 -6.605671,-14.7448012 -14.744801,-14.7448012 z m -0.07562,1.2261833 c 7.639459,0 13.291775,4.7889505 13.291775,13.2917749 0,8.675113 -5.81669,13.291775 -13.291775,13.291775 -7.302949,0 -13.2917734,-5.478092 -13.2917734,-13.291775 0,-7.9841069 5.8246384,-13.291775 13.2917734,-13.2917749 z"
style="color:#000000;fill:#dcdcdc;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient1529);stroke-width:3.00581574;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="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" />
<path
inkscape:connector-curvature="0"
style="color:#000000;fill:#dcdcdc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000036;marker:none;visibility:visible;display:inline;overflow:visible"
d="m 18.602905,3.0803551 c -8.16544,0 -14.7924642,6.627024 -14.7924642,14.7924639 0,8.16544 6.6270242,14.792464 14.7924642,14.792464 3.490803,0 6.572177,-1.388867 9.103055,-3.413645 -0.206041,1.010136 -0.07829,2.041947 0.758587,2.768846 l 10.999526,9.558207 c 1.237403,1.074792 3.097442,0.93397 4.172233,-0.303435 1.074791,-1.237404 0.933968,-3.097442 -0.303435,-4.172233 L 32.333346,27.544815 c -0.673698,-0.585164 -1.497704,-0.758413 -2.313693,-0.644799 1.993122,-2.520544 3.375716,-5.56674 3.375716,-9.027197 0,-8.1654399 -6.627024,-14.7924639 -14.792464,-14.7924639 z m -0.07586,3.1860692 c 6.281108,2e-7 11.378818,5.0977107 11.378818,11.3788187 0,6.281108 -5.09771,11.378818 -11.378818,11.378818 -6.281108,0 -11.3788184,-5.09771 -11.3788184,-11.378818 2e-7,-6.281108 5.0977104,-11.3788187 11.3788184,-11.3788187 z"
id="path4430" />
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" />
<path
style="color:#000000;fill:url(#linearGradient1531);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
d="m 39.507004,41.57769 c -0.478672,-2.273187 1.39733,-4.811422 3.584053,-4.788375 0,0 -10.760367,-9.258111 -10.760367,-9.258111 -2.944791,-0.05671 -4.269502,2.272616 -3.776814,4.599922 l 10.953128,9.446564 z"
id="path4438"
sodipodi:nodetypes="ccccc" />
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" />
<path
sodipodi:type="arc"
style="color:#000000;fill:none;stroke:url(#linearGradient1533);stroke-width:1.20643401;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="path4450"
style="color:#000000;fill:none;stroke:url(#linearGradient3989);stroke-width:1.24788225;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="path4450-2-3"
sodipodi:cx="17.500893"
sodipodi:cy="18.920233"
sodipodi:rx="11.048544"
sodipodi:ry="11.048544"
d="m 28.549437,18.920233 c 0,6.101942 -4.946602,11.048544 -11.048544,11.048544 -6.101943,0 -11.0485443,-4.946602 -11.0485443,-11.048544 0,-6.101943 4.9466013,-11.0485442 11.0485443,-11.0485442 6.101942,0 11.048544,4.9466012 11.048544,11.0485442 z"
transform="matrix(1.245743,0,0,1.245743,-3.425346,-6.177033)" />
transform="matrix(0.56839909,0,0,0.56171489,-21.968801,22.255175)"
inkscape:r_cx="true"
inkscape:r_cy="true" />
<rect
style="opacity:0.43315507;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.50295389;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"
width="19.048439"
height="4.4404783"
x="40.373337"
y="0.14086054"
rx="3.2112026"
ry="2.837393"
transform="matrix(0.752986,0.658037,-0.648902,0.760872,0,0)" />
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" />
<path
sodipodi:type="arc"
style="color:#000000;fill:url(#radialGradient1537);fill-opacity:1;fill-rule:evenodd;stroke:#3063a3;stroke-width:1.07456946;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible"
id="path4452"
style="color:#000000;fill:url(#radialGradient3991);fill-opacity:1;fill-rule:evenodd;stroke:#3063a3;stroke-width:1.11148739;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible"
id="path4452-9-3"
sodipodi:cx="17.589281"
sodipodi:cy="18.478292"
sodipodi:rx="8.3085051"
sodipodi:ry="8.3085051"
d="m 25.897786,18.478292 c 0,4.588661 -3.719844,8.308506 -8.308505,8.308506 -4.588661,0 -8.308505,-3.719845 -8.308505,-8.308506 0,-4.58866 3.719844,-8.308505 8.308505,-8.308505 4.588661,0 8.308505,3.719845 8.308505,8.308505 z"
transform="matrix(1.398614,0,0,1.398614,-6.224338,-8.298958)" />
transform="matrix(0.63815043,0,0,0.63064598,-23.245907,21.298384)"
inkscape:r_cx="true"
inkscape:r_cy="true" />
<path
style="opacity:0.83422457;color:#000000;fill:url(#radialGradient1539);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
d="m 18.156915,7.3966938 c -5.20759,0 -9.4245469,4.2169572 -9.4245469,9.4245472 0,1.503975 0.4203072,2.887773 1.0471719,4.149903 1.25238,0.461613 2.582757,0.775683 3.994767,0.775683 6.170955,0 11.099282,-4.861637 11.480106,-10.937129 C 23.523449,8.7641668 21.044374,7.3966938 18.156915,7.3966938 z"
id="path4462" />
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" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -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">
<inkscape:grid
type="xygrid"
id="grid3006"
empspacing="5"
id="grid3790"
empspacing="1"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
snapvisiblegridlinesonly="true"
dotted="false" />
</sodipodi:namedview>
<defs
id="defs4">
<filter
color-interpolation-filters="sRGB"
inkscape:collect="always"
id="filter3945">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.05617153"
id="feGaussianBlur3947" />
</filter>
<filter
color-interpolation-filters="sRGB"
inkscape:collect="always"
id="filter3941">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.05617153"
id="feGaussianBlur3943" />
</filter>
</defs>
id="defs4" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3757"
d="M 15,8.5 15,1"
style="fill:none;stroke:#666666;stroke-width:1.50000000000000000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
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" />
<path
style="fill:none;stroke:#666666;stroke-width:1.50000000000000000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 15,17.5 15,25"
style="fill:none;stroke:#999999;stroke-width:2.06995559;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 15.988919,17.227939 0,4.410281"
id="path3759"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
@ -97,8 +79,8 @@
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="fill:none;stroke:#800000;stroke-width:1.20000005;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 7.5,10.43551 4.5,0"
style="fill:none;stroke:#800000;stroke-width:1.01023686;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 7.4501318,10.566163 4.0771232,0"
id="path3760"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
@ -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" />
<path
style="fill:none;stroke:#800000;stroke-width:1.50000000000000000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 21.5,13 25,13"
@ -127,9 +109,29 @@
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#800000;stroke-width:1.20000005;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 9.9677555,13.25 0,4.5"
style="fill:none;stroke:#800000;stroke-width:0.97354424;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 9.510469,13.536502 0,3.970548"
id="path3813"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
sodipodi:type="arc"
style="opacity:0.86000001;fill:none;stroke:#999999;stroke-width:3.28437424;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3788-3"
sodipodi:cx="36.822445"
sodipodi:cy="7.9916244"
sodipodi:rx="3.6365161"
sodipodi:ry="3.5494139"
d="m 40.458961,7.9916244 a 3.6365161,3.5494139 0 1 1 -7.273032,0 3.6365161,3.5494139 0 1 1 7.273032,0 z"
transform="matrix(0.46138943,0,0,0.45207407,-1.0067413,20.046752)" />
<path
sodipodi:type="arc"
style="opacity:0.86000001;fill:none;stroke:#999999;stroke-width:3.28437424;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3788-3-1"
sodipodi:cx="36.822445"
sodipodi:cy="7.9916244"
sodipodi:rx="3.6365161"
sodipodi:ry="3.5494139"
d="m 40.458961,7.9916244 a 3.6365161,3.5494139 0 1 1 -7.273032,0 3.6365161,3.5494139 0 1 1 7.273032,0 z"
transform="matrix(0.46138943,0,0,0.45207407,-1.0067413,-1.2635743)" />
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 16 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -22,7 +22,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
@ -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" />
<g
id="g4114"
transform="matrix(1.7519228,0,0,1.5465512,-13.370601,-13.931557)">
<path
inkscape:connector-curvature="0"
id="path4084"
d="m 17.725294,12.847571 -4.616416,6.184254 -2.961474,1.567839 0.304858,-6.663316 z"
style="opacity:0.40154443;fill:#aaaaaa;fill-opacity:1;stroke:none;filter:url(#filter4110)" />
<g
transform="translate(29.788945,8.6666669)"
id="g4056">
<path
style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -18.901173,5.8793966 2.874372,1.5678392 -2.78727,1.8291458"
id="path4052"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -16.549414,9.4505859 2.700167,-0.087102"
id="path4054"
inkscape:connector-curvature="0" />
</g>
</g>
<path
style="opacity:0.40154443;fill:#aaaaaa;fill-opacity:1;stroke:none;filter:url(#filter4110)"
d="m 17.725294,12.847571 -4.616416,6.184254 -2.961474,1.567839 0.304858,-6.663316 z"
id="path4084"
inkscape:connector-curvature="0"
transform="matrix(1.7519228,0,0,1.5465512,-13.370601,-13.931557)" />
<path
style="fill:none;stroke:#00f13d;stroke-width:1.64603710000000003px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 10.070397,14.395655 4.730484,-0.134708"
id="path4054"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.41075706;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter4130)"
d="M 0.86226758,24.583418 23.589177,26.615905"
id="path4120"
inkscape:connector-curvature="0"
transform="matrix(1.0013662,0,0,0.94865427,-0.01670327,0.47581614)" />
<path
style="fill:none;stroke:#00f13d;stroke-width:1.64603710000000003px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 5.7039351,8.564675 5.0356779,2.424744 -4.8830819,2.828867"
id="path4052"
inkscape:connector-curvature="0" />
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

@ -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 )

View File

@ -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(

View File

@ -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 );
}

View File

@ -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;
}

View File

@ -623,18 +623,10 @@ void GRLineArray( EDA_RECT* aClipBox, wxDC* aDC, std::vector<wxPoint>& 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 );
}

View File

@ -28,11 +28,6 @@
* @brief Message panel implementation file.
*/
#ifdef __GNUG__
#pragma implementation
#endif
#include <msgpanel.h>

View File

@ -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();

View File

@ -33,6 +33,7 @@
#include <confirm.h>
#include <gestfich.h>
#include <3d_viewer.h>
#include <cvpcb.h>
#include <zones.h>
#include <cvpcb_mainframe.h>
@ -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?" ) ) )

View File

@ -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

View File

@ -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
}

View File

@ -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.

View File

@ -0,0 +1,394 @@
/* -*- c++ -*-
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2014 Henner Zeller <h.zeller@acm.org>
* 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 <component_tree_search_container.h>
#include <algorithm>
#include <boost/foreach.hpp>
#include <set>
#include <wx/string.h>
#include <wx/tokenzr.h>
#include <wx/treectrl.h>
#include <wx/arrstr.h>
#include <class_library.h>
#include <macros.h>
// 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();
}

View File

@ -0,0 +1,116 @@
/* -*- c++ -*-
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2014 Henner Zeller <h.zeller@acm.org>
* 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 <vector>
#include <wx/string.h>
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<TREE_NODE*> nodes;
wxTreeCtrl* tree;
int libraries_added;
wxString preselect_node_name;
int preselect_unit_number;
};
#endif /* COMPONENT_TREE_SEARCH_CONTAINER_H */

View File

@ -0,0 +1,294 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2014 Henner Zeller <h.zeller@acm.org>
* 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 <dialog_choose_component.h>
#include <set>
#include <boost/foreach.hpp>
#include <wx/tokenzr.h>
#include <class_library.h>
#include <component_tree_search_container.h>
#include <sch_base_frame.h>
// 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;
}

View File

@ -0,0 +1,77 @@
/* -*- c++ -*-
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2014 Henner Zeller <h.zeller@acm.org>
* 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 <dialog_choose_component_base.h>
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 */

View File

@ -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 );
}

View File

@ -0,0 +1,605 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<wxFormBuilder_Project>
<FileVersion major="1" minor="11" />
<object class="Project" expanded="1">
<property name="class_decoration"></property>
<property name="code_generation">C++</property>
<property name="disconnect_events">1</property>
<property name="disconnect_mode">source_name</property>
<property name="disconnect_php_events">0</property>
<property name="disconnect_python_events">0</property>
<property name="embedded_files_path">res</property>
<property name="encoding">UTF-8</property>
<property name="event_generation">connect</property>
<property name="file">dialog_choose_component_base</property>
<property name="first_id">1000</property>
<property name="help_provider">none</property>
<property name="internationalize">0</property>
<property name="name">dialog_choose_component_base</property>
<property name="namespace"></property>
<property name="path">.</property>
<property name="precompiled_header"></property>
<property name="relative_path">1</property>
<property name="skip_lua_events">1</property>
<property name="skip_php_events">1</property>
<property name="skip_python_events">1</property>
<property name="ui_table">UI</property>
<property name="use_enum">0</property>
<property name="use_microsoft_bom">0</property>
<object class="Dialog" expanded="1">
<property name="aui_managed">0</property>
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
<property name="bg"></property>
<property name="center">wxBOTH</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="enabled">1</property>
<property name="event_handler">impl_virtual</property>
<property name="extra_style"></property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="minimum_size">450,100</property>
<property name="name">DIALOG_CHOOSE_COMPONENT_BASE</property>
<property name="pos"></property>
<property name="size">450,500</property>
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
<property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
<property name="title"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnActivate"></event>
<event name="OnActivateApp"></event>
<event name="OnAuiFindManager"></event>
<event name="OnAuiPaneButton"></event>
<event name="OnAuiPaneClose"></event>
<event name="OnAuiPaneMaximize"></event>
<event name="OnAuiPaneRestore"></event>
<event name="OnAuiRender"></event>
<event name="OnChar"></event>
<event name="OnClose"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnHibernate"></event>
<event name="OnIconize"></event>
<event name="OnIdle"></event>
<event name="OnInitDialog"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizer1</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bSearchSizer</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Search</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_searchLabel</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">1</property>
<object class="wxTextCtrl" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size">-1,-1</property>
<property name="maxlength"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_searchBox</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxTE_PROCESS_ENTER</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown">OnInterceptSearchBoxKey</event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnText">OnSearchBoxChange</event>
<event name="OnTextEnter">OnSearchBoxEnter</event>
<event name="OnTextMaxLen"></event>
<event name="OnTextURL"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxTreeCtrl" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size">-1,50</property>
<property name="moveable">1</property>
<property name="name">m_libraryComponentTree</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxTR_DEFAULT_STYLE|wxTR_HIDE_ROOT</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp">OnTreeMouseUp</event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnTreeBeginDrag"></event>
<event name="OnTreeBeginLabelEdit"></event>
<event name="OnTreeBeginRDrag"></event>
<event name="OnTreeDeleteItem"></event>
<event name="OnTreeEndDrag"></event>
<event name="OnTreeEndLabelEdit"></event>
<event name="OnTreeGetInfo"></event>
<event name="OnTreeItemActivated">OnDoubleClickTreeSelect</event>
<event name="OnTreeItemCollapsed"></event>
<event name="OnTreeItemCollapsing"></event>
<event name="OnTreeItemExpanded"></event>
<event name="OnTreeItemExpanding"></event>
<event name="OnTreeItemGetTooltip"></event>
<event name="OnTreeItemMenu"></event>
<event name="OnTreeItemMiddleClick"></event>
<event name="OnTreeItemRightClick"></event>
<event name="OnTreeKeyDown"></event>
<event name="OnTreeSelChanged">OnTreeSelect</event>
<event name="OnTreeSelChanging"></event>
<event name="OnTreeSetInfo"></event>
<event name="OnTreeStateImageClick"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizer3</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND | wxALL</property>
<property name="proportion">4</property>
<object class="wxPanel" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size">150,150</property>
<property name="moveable">1</property>
<property name="name">m_componentView</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style">wxFULL_REPAINT_ON_RESIZE|wxSUNKEN_BORDER</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp">OnStartComponentBrowser</event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint">OnHandlePreviewRepaint</event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">3</property>
<object class="wxTextCtrl" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size">-1,100</property>
<property name="moveable">1</property>
<property name="name">m_componentDetails</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size">-1,-1</property>
<property name="style">wxTE_MULTILINE</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnText"></event>
<event name="OnTextEnter"></event>
<event name="OnTextMaxLen"></event>
<event name="OnTextURL"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_RIGHT</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizer5</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxStdDialogButtonSizer" expanded="0">
<property name="Apply">0</property>
<property name="Cancel">1</property>
<property name="ContextHelp">0</property>
<property name="Help">0</property>
<property name="No">0</property>
<property name="OK">1</property>
<property name="Save">0</property>
<property name="Yes">0</property>
<property name="minimum_size"></property>
<property name="name">m_button</property>
<property name="permission">protected</property>
<event name="OnApplyButtonClick"></event>
<event name="OnCancelButtonClick"></event>
<event name="OnContextHelpButtonClick"></event>
<event name="OnHelpButtonClick"></event>
<event name="OnNoButtonClick"></event>
<event name="OnOKButtonClick"></event>
<event name="OnSaveButtonClick"></event>
<event name="OnYesButtonClick"></event>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</wxFormBuilder_Project>

View File

@ -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 <wx/artprov.h>
#include <wx/xrc/xmlres.h>
class DIALOG_SHIM;
#include "dialog_shim.h"
#include <wx/string.h>
#include <wx/stattext.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/textctrl.h>
#include <wx/sizer.h>
#include <wx/treectrl.h>
#include <wx/panel.h>
#include <wx/button.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// 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__

View File

@ -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

View File

@ -45,11 +45,14 @@
#include <viewlib_frame.h>
#include <eeschema_id.h>
#include <dialog_choose_component.h>
#include <component_tree_search_container.h>
#include <dialog_get_component.h>
#include <boost/foreach.hpp>
// 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() )
{

View File

@ -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")

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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;

View File

@ -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 )
{

View File

@ -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 <stambaughw@verizon.net>
* 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 <stambaughw@verizon.net>
* 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 <fctsys.h>
#include <appl_wxstruct.h>
@ -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

View File

@ -46,8 +46,13 @@
#include <sch_bitmap.h>
// 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

View File

@ -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 <stambaughw@verizon.net>
* 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 <stambaughw@verizon.net>
* 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.

View File

@ -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.
*/

View File

@ -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();
}

View File

@ -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;

View File

@ -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 ) );
}

View File

@ -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; }
};

View File

@ -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 ); }

View File

@ -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 )

View File

@ -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

View File

@ -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)))

View File

@ -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

View File

@ -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<value_type*>(_buffer))[i]; }
const value_type& elem (size_t i) const { return (reinterpret_cast<const value_type*>(_buffer))[i]; }
GLM_FUNC_QUALIFIER value_type& elem (size_t i) { return (reinterpret_cast<value_type*>(_buffer))[i]; }
GLM_FUNC_QUALIFIER const value_type& elem (size_t i) const { return (reinterpret_cast<const value_type*>(_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 <typename T, typename V, int E0, int E1>
struct _swizzle_base1<T,V,E0,E1,-1,-2,2> : public _swizzle_base0<T,2>
{
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 <typename T, typename V, int E0, int E1, int E2>
struct _swizzle_base1<T,V,E0,E1,E2,-1,3> : public _swizzle_base0<T,3>
{
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 <typename T, typename V, int E0, int E1, int E2, int E3>
struct _swizzle_base1<T,V,E0,E1,E2,E3,4> : public _swizzle_base0<T,4>
{
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 <typename T>
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; }; \

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/abs.xml">GLSL abs man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/sign.xml">GLSL sign man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/floor.xml">GLSL floor man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/trunc.xml">GLSL trunc man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/round.xml">GLSL round man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
/// @see <a href="http://developer.amd.com/documentation/articles/pages/New-Round-to-Even-Technique.aspx">New round to even technique</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/ceil.xml">GLSL ceil man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
genType ceil(genType const & x);
GLM_FUNC_DECL genType ceil(genType const & x);
/// Return x - floor(x).
///
@ -122,7 +122,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/fract.xml">GLSL fract man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/mod.xml">GLSL mod man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
genType mod(
GLM_FUNC_DECL genType mod(
genType const & x,
genType const & y);
@ -144,7 +144,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/mod.xml">GLSL mod man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
genType mod(
GLM_FUNC_DECL genType mod(
genType const & x,
typename genType::value_type const & y);
@ -158,7 +158,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/modf.xml">GLSL modf man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
genType modf(
GLM_FUNC_DECL genType modf(
genType const & x,
genType & i);
@ -169,12 +169,12 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/min.xml">GLSL min man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
genType min(
GLM_FUNC_DECL genType min(
genType const & x,
genType const & y);
template <typename genType>
genType min(
GLM_FUNC_DECL genType min(
genType const & x,
typename genType::value_type const & y);
@ -185,12 +185,12 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/max.xml">GLSL max man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
genType max(
GLM_FUNC_DECL genType max(
genType const & x,
genType const & y);
template <typename genType>
genType max(
GLM_FUNC_DECL genType max(
genType const & x,
typename genType::value_type const & y);
@ -202,33 +202,33 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/clamp.xml">GLSL clamp man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
genType clamp(
GLM_FUNC_DECL genType clamp(
genType const & x,
genType const & minVal,
genType const & maxVal);
template <typename genType>
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 <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.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/mix.xml">GLSL mix man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
@ -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 <typename genTypeT, typename genTypeU>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/step.xml">GLSL step man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
genType step(
GLM_FUNC_DECL genType step(
genType const & edge,
genType const & x);
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/smoothstep.xml">GLSL smoothstep man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
genType smoothstep(
GLM_FUNC_DECL genType smoothstep(
genType const & edge0,
genType const & edge1,
genType const & x);
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/isnan.xml">GLSL isnan man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/isinf.xml">GLSL isinf man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/floatBitsToInt.xml">GLSL floatBitsToInt man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType, typename genIType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/floatBitsToUint.xml">GLSL floatBitsToUint man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType, typename genUType>
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 <typename genType, typename genIType>
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 <typename genType, typename genUType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/fma.xml">GLSL fma man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/frexp.xml">GLSL frexp man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType, typename genIType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/ldexp.xml">GLSL ldexp man page</a>;
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType, typename genIType>
genType ldexp(genType const & x, genIType const & exp);
GLM_FUNC_DECL genType ldexp(genType const & x, genIType const & exp);
/// @}
}//namespace glm

View File

@ -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 <typename genFIType>
struct Abs_<genFIType, true>
{
static genFIType get(genFIType const & x)
GLM_FUNC_QUALIFIER static genFIType get(genFIType const & x)
{
GLM_STATIC_ASSERT(
detail::type<genFIType>::is_float ||
@ -49,7 +49,7 @@ namespace detail
template <typename genFIType>
struct Abs_<genFIType, false>
{
static genFIType get(genFIType const & x)
GLM_FUNC_QUALIFIER static genFIType get(genFIType const & x)
{
GLM_STATIC_ASSERT(
detail::type<genFIType>::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 <typename genTypeT, typename genTypeU>
GLM_FUNC_QUALIFIER genTypeT mix
template <typename genType>
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<genTypeT>::is_float &&
// detail::type<genTypeU>::is_float);
GLM_STATIC_ASSERT(detail::type<genType>::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 <typename valTypeA, typename valTypeB>
GLM_FUNC_QUALIFIER detail::tvec2<valTypeA> mix
template <typename valType>
GLM_FUNC_QUALIFIER detail::tvec2<valType> mix
(
detail::tvec2<valTypeA> const & x,
detail::tvec2<valTypeA> const & y,
valTypeB const & a
detail::tvec2<valType> const & x,
detail::tvec2<valType> const & y,
valType const & a
)
{
return detail::tvec2<valTypeA>(
detail::tvec2<valTypeB>(x) + a * detail::tvec2<valTypeB>(y - x));
GLM_STATIC_ASSERT(detail::type<valType>::is_float , "'genType' is not floating-point type");
return x + a * (y - x);
}
template <typename valTypeA, typename valTypeB>
GLM_FUNC_QUALIFIER detail::tvec3<valTypeA> mix
template <typename valType>
GLM_FUNC_QUALIFIER detail::tvec3<valType> mix
(
detail::tvec3<valTypeA> const & x,
detail::tvec3<valTypeA> const & y,
valTypeB const & a
detail::tvec3<valType> const & x,
detail::tvec3<valType> const & y,
valType const & a
)
{
return detail::tvec3<valTypeA>(
detail::tvec3<valTypeB>(x) + a * detail::tvec3<valTypeB>(y - x));
return x + a * (y - x);
}
template <typename valTypeA, typename valTypeB>
GLM_FUNC_QUALIFIER detail::tvec4<valTypeA> mix
template <typename valType>
GLM_FUNC_QUALIFIER detail::tvec4<valType> mix
(
detail::tvec4<valTypeA> const & x,
detail::tvec4<valTypeA> const & y,
valTypeB const & a
detail::tvec4<valType> const & x,
detail::tvec4<valType> const & y,
valType const & a
)
{
return detail::tvec4<valTypeA>(
detail::tvec4<valTypeB>(x) + a * detail::tvec4<valTypeB>(y - x));
return x + a * (y - x);
}
template <typename valTypeA, typename valTypeB>
GLM_FUNC_QUALIFIER detail::tvec2<valTypeA> mix
template <typename valType>
GLM_FUNC_QUALIFIER detail::tvec2<valType> mix
(
detail::tvec2<valTypeA> const & x,
detail::tvec2<valTypeA> const & y,
detail::tvec2<valTypeB> const & a
detail::tvec2<valType> const & x,
detail::tvec2<valType> const & y,
detail::tvec2<valType> const & a
)
{
return detail::tvec2<valTypeA>(
detail::tvec2<valTypeB>(x) + a * detail::tvec2<valTypeB>(y - x));
return x + a * (y - x);
}
template <typename valTypeA, typename valTypeB>
GLM_FUNC_QUALIFIER detail::tvec3<valTypeA> mix
template <typename valType>
GLM_FUNC_QUALIFIER detail::tvec3<valType> mix
(
detail::tvec3<valTypeA> const & x,
detail::tvec3<valTypeA> const & y,
detail::tvec3<valTypeB> const & a
detail::tvec3<valType> const & x,
detail::tvec3<valType> const & y,
detail::tvec3<valType> const & a
)
{
return detail::tvec3<valTypeA>(
detail::tvec3<valTypeB>(x) + a * detail::tvec3<valTypeB>(y - x));
GLM_STATIC_ASSERT(detail::type<valType>::is_float , "'genType' is not floating-point type");
return x + a * (y - x);
}
template <typename valTypeA, typename valTypeB>
GLM_FUNC_QUALIFIER detail::tvec4<valTypeA> mix
template <typename valType>
GLM_FUNC_QUALIFIER detail::tvec4<valType> mix
(
detail::tvec4<valTypeA> const & x,
detail::tvec4<valTypeA> const & y,
detail::tvec4<valTypeB> const & a
detail::tvec4<valType> const & x,
detail::tvec4<valType> const & y,
detail::tvec4<valType> const & a
)
{
return detail::tvec4<valTypeA>(
detail::tvec4<valTypeB>(x) + a * detail::tvec4<valTypeB>(y - x));
return x + a * (y - x);
}
//template <typename genTypeT>
@ -525,15 +519,63 @@ namespace detail
// return x + a * (y - x);
//}
template <typename genType>
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<genType>::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 <typename T>
GLM_FUNC_QUALIFIER detail::tvec2<T> mix
(
detail::tvec2<T> const & x,
detail::tvec2<T> const & y,
bool a
)
{
GLM_STATIC_ASSERT(detail::type<T>::is_float, "'mix' only accept floating-point inputs");
return a ? y : x;
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tvec3<T> mix
(
detail::tvec3<T> const & x,
detail::tvec3<T> const & y,
bool a
)
{
GLM_STATIC_ASSERT(detail::type<T>::is_float, "'mix' only accept floating-point inputs");
return a ? y : x;
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tvec4<T> mix
(
detail::tvec4<T> const & x,
detail::tvec4<T> const & y,
bool a
)
{
GLM_STATIC_ASSERT(detail::type<T>::is_float, "'mix' only accept floating-point inputs");
return a ? y : x;
}
@ -552,8 +594,7 @@ namespace detail
for
(
typename detail::tvec2<T>::size_type i = 0;
i < detail::tvec2<T>::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<T>::size_type i = 0;
i < detail::tvec3<T>::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<T>::size_type i = 0;
i < detail::tvec4<T>::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<genType>::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 <typename T>
@ -858,32 +899,20 @@ namespace detail
{
GLM_STATIC_ASSERT(detail::type<genType>::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 <typename T>

View File

@ -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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/pow.xml">GLSL pow man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/exp.xml">GLSL exp man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/log.xml">GLSL log man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/exp2.xml">GLSL exp2 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/log2.xml">GLSL log2 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/sqrt.xml">GLSL sqrt man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/inversesqrt.xml">GLSL inversesqrt man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>
template <typename genType>
genType inversesqrt(genType const & x);
GLM_FUNC_DECL genType inversesqrt(genType const & x);
/// @}
}//namespace glm

View File

@ -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<genType>::is_float, "'inversesqrt' only accept floating-point input");
assert(x > genType(0));
return genType(1) / ::std::sqrt(x);
}

View File

@ -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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/length.xml">GLSL length man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/distance.xml">GLSL distance man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/dot.xml">GLSL dot man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/cross.xml">GLSL cross man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename valType>
detail::tvec3<valType> cross(
GLM_FUNC_DECL detail::tvec3<valType> cross(
detail::tvec3<valType> const & x,
detail::tvec3<valType> const & y);
@ -89,7 +89,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/normalize.xml">GLSL normalize man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/faceforward.xml">GLSL faceforward man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename genType>
genType faceforward(
GLM_FUNC_DECL genType faceforward(
genType const & N,
genType const & I,
genType const & Nref);
@ -112,7 +112,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/reflect.xml">GLSL reflect man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename genType>
genType reflect(
GLM_FUNC_DECL genType reflect(
genType const & I,
genType const & N);
@ -125,7 +125,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/refract.xml">GLSL refract man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename genType>
genType refract(
GLM_FUNC_DECL genType refract(
genType const & I,
genType const & N,
typename genType::value_type const & eta);

View File

@ -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<genType>::is_float, "'dot' only accept floating-point inputs");
@ -271,7 +270,7 @@ namespace glm
// reflect
template <typename genType>
genType reflect
GLM_FUNC_QUALIFIER genType reflect
(
genType const & I,
genType const & N

View File

@ -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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/uaddCarry.xml">GLSL uaddCarry man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename genUType>
genUType uaddCarry(
GLM_FUNC_DECL genUType uaddCarry(
genUType const & x,
genUType const & y,
genUType & carry);
@ -66,7 +66,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/usubBorrow.xml">GLSL usubBorrow man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename genUType>
genUType usubBorrow(
GLM_FUNC_DECL genUType usubBorrow(
genUType const & x,
genUType const & y,
genUType & borrow);
@ -80,7 +80,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/umulExtended.xml">GLSL umulExtended man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename genUType>
void umulExtended(
GLM_FUNC_DECL void umulExtended(
genUType const & x,
genUType const & y,
genUType & msb,
@ -95,7 +95,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/imulExtended.xml">GLSL imulExtended man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename genIType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/bitfieldExtract.xml">GLSL bitfieldExtract man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename genIUType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/bitfieldInsert.xml">GLSL bitfieldInsert man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename genIUType>
genIUType bitfieldInsert(
GLM_FUNC_DECL genIUType bitfieldInsert(
genIUType const & Base,
genIUType const & Insert,
int const & Offset,
@ -152,7 +152,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/bitfieldReverse.xml">GLSL bitfieldReverse man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename genIUType>
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 <typename T, template <typename> class genIUType>
typename genIUType<T>::signed_type bitCount(genIUType<T> const & Value);
GLM_FUNC_DECL typename genIUType<T>::signed_type bitCount(genIUType<T> 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 <typename T, template <typename> class genIUType>
typename genIUType<T>::signed_type findLSB(genIUType<T> const & Value);
GLM_FUNC_DECL typename genIUType<T>::signed_type findLSB(genIUType<T> 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 <typename T, template <typename> class genIUType>
typename genIUType<T>::signed_type findMSB(genIUType<T> const & Value);
GLM_FUNC_DECL typename genIUType<T>::signed_type findMSB(genIUType<T> const & Value);
/// @}
}//namespace glm

View File

@ -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 <intrin.h>
#pragma intrinsic(_BitScanReverse)
#endif
# include <intrin.h>
# 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 <typename T>
@ -521,7 +523,6 @@ namespace glm
}
// findMSB
/*
#if((GLM_ARCH != GLM_ARCH_PURE) && (GLM_COMPILER & GLM_COMPILER_VC))
template <typename genIUType>
@ -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 <typename T>
GLM_FUNC_QUALIFIER detail::tvec2<int> findMSB

View File

@ -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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/matrixCompMult.xml">GLSL matrixCompMult man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.6 Matrix Functions</a>
template <typename matType>
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 <typename vecType, typename matType>
matType outerProduct(
GLM_FUNC_DECL matType outerProduct(
vecType const & c,
vecType const & r);
@ -79,7 +79,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/transpose.xml">GLSL transpose man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.6 Matrix Functions</a>
template <typename matType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/determinant.xml">GLSL determinant man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.6 Matrix Functions</a>
template <typename valType>
typename detail::tmat2x2<valType>::value_type determinant(
GLM_FUNC_DECL typename detail::tmat2x2<valType>::value_type determinant(
detail::tmat2x2<valType> const & m);
/// Return the determinant of a mat3 matrix.
@ -99,7 +99,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/determinant.xml">GLSL determinant man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.6 Matrix Functions</a>
template <typename valType>
typename detail::tmat3x3<valType>::value_type determinant(
GLM_FUNC_DECL typename detail::tmat3x3<valType>::value_type determinant(
detail::tmat3x3<valType> const & m);
/// Return the determinant of a mat4 matrix.
@ -109,7 +109,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/determinant.xml">GLSL determinant man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.6 Matrix Functions</a>
template <typename valType>
typename detail::tmat4x4<valType>::value_type determinant(
GLM_FUNC_DECL typename detail::tmat4x4<valType>::value_type determinant(
detail::tmat4x4<valType> const & m);
/// Return the inverse of a mat2 matrix.
@ -119,7 +119,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/inverse.xml">GLSL inverse man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.6 Matrix Functions</a>
template <typename valType>
detail::tmat2x2<valType> inverse(
GLM_FUNC_DECL detail::tmat2x2<valType> inverse(
detail::tmat2x2<valType> const & m);
/// Return the inverse of a mat3 matrix.
@ -129,7 +129,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/inverse.xml">GLSL inverse man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.6 Matrix Functions</a>
template <typename valType>
detail::tmat3x3<valType> inverse(
GLM_FUNC_DECL detail::tmat3x3<valType> inverse(
detail::tmat3x3<valType> const & m);
/// Return the inverse of a mat4 matrix.
@ -139,7 +139,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/inverse.xml">GLSL inverse man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.6 Matrix Functions</a>
template <typename valType>
detail::tmat4x4<valType> inverse(
GLM_FUNC_DECL detail::tmat4x4<valType> inverse(
detail::tmat4x4<valType> const & m);
/// @}

View File

@ -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

View File

@ -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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/noise1.xml">GLSL noise1 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.13 Noise Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/noise2.xml">GLSL noise2 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.13 Noise Functions</a>
template <typename genType>
detail::tvec2<typename genType::value_type> noise2(genType const & x);
GLM_FUNC_DECL detail::tvec2<typename genType::value_type> noise2(genType const & x);
/// Returns a 3D noise value based on the input value x.
///
@ -68,7 +68,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/noise3.xml">GLSL noise3 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.13 Noise Functions</a>
template <typename genType>
detail::tvec3<typename genType::value_type> noise3(genType const & x);
GLM_FUNC_DECL detail::tvec3<typename genType::value_type> noise3(genType const & x);
/// Returns a 4D noise value based on the input value x.
///
@ -77,7 +77,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/noise4.xml">GLSL noise4 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.13 Noise Functions</a>
template <typename genType>
detail::tvec4<typename genType::value_type> noise4(genType const & x);
GLM_FUNC_DECL detail::tvec4<typename genType::value_type> noise4(genType const & x);
/// @}
}//namespace glm

View File

@ -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

View File

@ -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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/packUnorm2x16.xml">GLSL packUnorm2x16 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>
detail::uint32 packUnorm2x16(detail::tvec2<detail::float32> const & v);
GLM_FUNC_DECL detail::uint32 packUnorm2x16(detail::tvec2<detail::float32> 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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/packSnorm2x16.xml">GLSL packSnorm2x16 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>
detail::uint32 packSnorm2x16(detail::tvec2<detail::float32> const & v);
GLM_FUNC_DECL detail::uint32 packSnorm2x16(detail::tvec2<detail::float32> 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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/packUnorm4x8.xml">GLSL packUnorm4x8 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>
detail::uint32 packUnorm4x8(detail::tvec4<detail::float32> const & v);
GLM_FUNC_DECL detail::uint32 packUnorm4x8(detail::tvec4<detail::float32> 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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/packSnorm4x8.xml">GLSL packSnorm4x8 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>
detail::uint32 packSnorm4x8(detail::tvec4<detail::float32> const & v);
GLM_FUNC_DECL detail::uint32 packSnorm4x8(detail::tvec4<detail::float32> 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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackUnorm2x16.xml">GLSL unpackUnorm2x16 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>
detail::tvec2<detail::float32> unpackUnorm2x16(detail::uint32 const & p);
GLM_FUNC_DECL detail::tvec2<detail::float32> 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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackSnorm2x16.xml">GLSL unpackSnorm2x16 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>
detail::tvec2<detail::float32> unpackSnorm2x16(detail::uint32 const & p);
GLM_FUNC_DECL detail::tvec2<detail::float32> 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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackUnorm4x8.xml">GLSL unpackUnorm4x8 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>
detail::tvec4<detail::float32> unpackUnorm4x8(detail::uint32 const & p);
GLM_FUNC_DECL detail::tvec4<detail::float32> 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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackSnorm4x8.xml">GLSL unpackSnorm4x8 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>
detail::tvec4<detail::float32> unpackSnorm4x8(detail::uint32 const & p);
GLM_FUNC_DECL detail::tvec4<detail::float32> 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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/packDouble2x32.xml">GLSL packDouble2x32 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>
double packDouble2x32(detail::tvec2<detail::uint32> const & v);
GLM_FUNC_DECL double packDouble2x32(detail::tvec2<detail::uint32> 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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackDouble2x32.xml">GLSL unpackDouble2x32 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>
detail::tvec2<detail::uint32> unpackDouble2x32(double const & v);
GLM_FUNC_DECL detail::tvec2<detail::uint32> 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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/packHalf2x16.xml">GLSL packHalf2x16 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackHalf2x16.xml">GLSL unpackHalf2x16 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>
vec2 unpackHalf2x16(uint const & v);
GLM_FUNC_DECL vec2 unpackHalf2x16(uint const & v);
/// @}
}//namespace glm

View File

@ -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<detail::uint32> 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<uint> unpackDouble2x32(double const & v)
{
return *(detail::tvec2<uint>*)&v;
struct uint32_pair
{
detail::uint32 x;
detail::uint32 y;
};
union helper
{
double input;
uint32_pair output;
} Helper;
Helper.input = v;
return detail::tvec2<uint>(Helper.output.x, Helper.output.y);
}
GLM_FUNC_QUALIFIER uint packHalf2x16(detail::tvec2<float> 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)

View File

@ -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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/radians.xml">GLSL radians man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/degrees.xml">GLSL degrees man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/sin.xml">GLSL sin man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/cos.xml">GLSL cos man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/tan.xml">GLSL tan man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/asin.xml">GLSL asin man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/acos.xml">GLSL acos man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/atan.xml">GLSL atan man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/atan.xml">GLSL atan man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/sinh.xml">GLSL sinh man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/cosh.xml">GLSL cosh man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/tanh.xml">GLSL tanh man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/asinh.xml">GLSL asinh man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/acosh.xml">GLSL acosh man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>
template <typename genType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/atanh.xml">GLSL atanh man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>
template <typename genType>
genType atanh(genType const & x);
GLM_FUNC_DECL genType atanh(genType const & x);
/// @}
}//namespace glm

View File

@ -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

View File

@ -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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/lessThan.xml">GLSL lessThan man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>
template <typename vecType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/lessThanEqual.xml">GLSL lessThanEqual man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>
template <typename vecType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/greaterThan.xml">GLSL greaterThan man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>
template <typename vecType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/greaterThanEqual.xml">GLSL greaterThanEqual man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>
template <typename vecType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/equal.xml">GLSL equal man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>
template <typename vecType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/notEqual.xml">GLSL notEqual man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>
template <typename vecType>
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 <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/any.xml">GLSL any man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>
template <template <typename> class vecType>
bool any(vecType<bool> const & v);
GLM_FUNC_DECL bool any(vecType<bool> const & v);
/// Returns true if all components of x are true.
///
@ -118,7 +118,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/all.xml">GLSL all man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>
template <template <typename> class vecType>
bool all(vecType<bool> const & v);
GLM_FUNC_DECL bool all(vecType<bool> const & v);
/// Returns the component-wise logical complement of x.
/// /!\ Because of language incompatibilities between C++ and GLSL, GLM defines the function not but not_ instead.
@ -128,7 +128,7 @@ namespace glm
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/not.xml">GLSL not man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>
template <template <typename> class vecType>
vecType<bool> not_(vecType<bool> const & v);
GLM_FUNC_DECL vecType<bool> not_(vecType<bool> const & v);
/// @}
}//namespace glm

View File

@ -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

View File

@ -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

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