Compare commits

...

2 Commits

Author SHA1 Message Date
Akko
bb83b2c83f Many changes; started refactor in gmtypes2.py 2023-05-31 16:56:47 +02:00
Akko
6379bc5962 Major refactors 2023-05-17 16:27:52 +02:00
118 changed files with 908 additions and 353 deletions

1
.gitignore vendored
View File

@@ -1,4 +1,5 @@
build
gradientmesh/test_data/examples
apps/results
apps/files
apps/__pycache__

627
CMakeCache.txt Normal file
View File

@@ -0,0 +1,627 @@
# This is the CMakeCache file.
# For build in directory: /home/kahr/Projects/bachelors_project/diffvg
# It was generated by CMake: /home/kahr/Projects/bachelors_project/diffvg/.venv/lib/python3.10/site-packages/cmake/data/bin/cmake
# You can edit this file to change values found and used by cmake.
# If you do not want to change any of the values, simply exit the editor.
# If you do want to change a value, simply edit, save, and exit the editor.
# The syntax for the file is as follows:
# KEY:TYPE=VALUE
# KEY is the name of a variable in the cache.
# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
# VALUE is the current value for the KEY.
########################
# EXTERNAL cache entries
########################
//Path to a program.
CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line
//Path to a program.
CMAKE_AR:FILEPATH=/usr/bin/ar
//Choose the type of build, options are: None Debug Release RelWithDebInfo
// MinSizeRel ...
CMAKE_BUILD_TYPE:STRING=Release
//Enable/Disable color output during build.
CMAKE_COLOR_MAKEFILE:BOOL=ON
//CXX compiler
CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++
//A wrapper around 'ar' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar
//A wrapper around 'ranlib' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib
//Flags used by the CXX compiler during all build types.
CMAKE_CXX_FLAGS:STRING=
//Flags used by the CXX compiler during DEBUG builds.
CMAKE_CXX_FLAGS_DEBUG:STRING=-g
//Flags used by the CXX compiler during MINSIZEREL builds.
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
//Flags used by the CXX compiler during RELEASE builds.
CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
//Flags used by the CXX compiler during RELWITHDEBINFO builds.
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
//C compiler
CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc
//A wrapper around 'ar' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar
//A wrapper around 'ranlib' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib
//Flags used by the C compiler during all build types.
CMAKE_C_FLAGS:STRING=
//Flags used by the C compiler during DEBUG builds.
CMAKE_C_FLAGS_DEBUG:STRING=-g
//Flags used by the C compiler during MINSIZEREL builds.
CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
//Flags used by the C compiler during RELEASE builds.
CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
//Flags used by the C compiler during RELWITHDEBINFO builds.
CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
//Path to a program.
CMAKE_DLLTOOL:FILEPATH=/usr/lib/llvm/16/bin/dlltool
//Flags used by the linker during all build types.
CMAKE_EXE_LINKER_FLAGS:STRING=
//Flags used by the linker during DEBUG builds.
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during MINSIZEREL builds.
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during RELEASE builds.
CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during RELWITHDEBINFO builds.
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//Enable/Disable output of compile commands during generation.
CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=
//Value Computed by CMake.
CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/home/kahr/Projects/bachelors_project/diffvg/CMakeFiles/pkgRedirects
//User executables (bin)
CMAKE_INSTALL_BINDIR:PATH=bin
//Read-only architecture-independent data (DATAROOTDIR)
CMAKE_INSTALL_DATADIR:PATH=
//Read-only architecture-independent data root (share)
CMAKE_INSTALL_DATAROOTDIR:PATH=share
//Documentation root (DATAROOTDIR/doc/PROJECT_NAME)
CMAKE_INSTALL_DOCDIR:PATH=
//C header files (include)
CMAKE_INSTALL_INCLUDEDIR:PATH=include
//Info documentation (DATAROOTDIR/info)
CMAKE_INSTALL_INFODIR:PATH=
//Object code libraries (lib64)
CMAKE_INSTALL_LIBDIR:PATH=lib64
//Program executables (libexec)
CMAKE_INSTALL_LIBEXECDIR:PATH=libexec
//Locale-dependent data (DATAROOTDIR/locale)
CMAKE_INSTALL_LOCALEDIR:PATH=
//Modifiable single-machine data (var)
CMAKE_INSTALL_LOCALSTATEDIR:PATH=var
//Man documentation (DATAROOTDIR/man)
CMAKE_INSTALL_MANDIR:PATH=
//C header files for non-gcc (/usr/include)
CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include
//Install path prefix, prepended onto install directories.
CMAKE_INSTALL_PREFIX:PATH=/usr/local
//Run-time variable data (LOCALSTATEDIR/run)
CMAKE_INSTALL_RUNSTATEDIR:PATH=
//System admin executables (sbin)
CMAKE_INSTALL_SBINDIR:PATH=sbin
//Modifiable architecture-independent data (com)
CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com
//Read-only single-machine data (etc)
CMAKE_INSTALL_SYSCONFDIR:PATH=etc
//No help, variable specified on the command line.
CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/home/kahr/Projects/bachelors_project/diffvg/build/lib.linux-x86_64-cpython-310
//Path to a program.
CMAKE_LINKER:FILEPATH=/usr/bin/ld
//Path to a program.
CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/gmake
//Flags used by the linker during the creation of modules during
// all build types.
CMAKE_MODULE_LINKER_FLAGS:STRING=
//Flags used by the linker during the creation of modules during
// DEBUG builds.
CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during the creation of modules during
// MINSIZEREL builds.
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during the creation of modules during
// RELEASE builds.
CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during the creation of modules during
// RELWITHDEBINFO builds.
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//Path to a program.
CMAKE_NM:FILEPATH=/usr/bin/nm
//Path to a program.
CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
//Path to a program.
CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
//Value Computed by CMake
CMAKE_PROJECT_DESCRIPTION:STATIC=Differentiable Vector Graphics
//Value Computed by CMake
CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
//Value Computed by CMake
CMAKE_PROJECT_NAME:STATIC=diffvg
//Value Computed by CMake
CMAKE_PROJECT_VERSION:STATIC=0.0.1
//Value Computed by CMake
CMAKE_PROJECT_VERSION_MAJOR:STATIC=0
//Value Computed by CMake
CMAKE_PROJECT_VERSION_MINOR:STATIC=0
//Value Computed by CMake
CMAKE_PROJECT_VERSION_PATCH:STATIC=1
//Value Computed by CMake
CMAKE_PROJECT_VERSION_TWEAK:STATIC=
//Path to a program.
CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
//Path to a program.
CMAKE_READELF:FILEPATH=/usr/bin/readelf
//Flags used by the linker during the creation of shared libraries
// during all build types.
CMAKE_SHARED_LINKER_FLAGS:STRING=
//Flags used by the linker during the creation of shared libraries
// during DEBUG builds.
CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during the creation of shared libraries
// during MINSIZEREL builds.
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during the creation of shared libraries
// during RELEASE builds.
CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during the creation of shared libraries
// during RELWITHDEBINFO builds.
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//If set, runtime paths are not added when installing shared libraries,
// but are added when building.
CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
//If set, runtime paths are not added when using shared libraries.
CMAKE_SKIP_RPATH:BOOL=NO
//Flags used by the linker during the creation of static libraries
// during all build types.
CMAKE_STATIC_LINKER_FLAGS:STRING=
//Flags used by the linker during the creation of static libraries
// during DEBUG builds.
CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during the creation of static libraries
// during MINSIZEREL builds.
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during the creation of static libraries
// during RELEASE builds.
CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during the creation of static libraries
// during RELWITHDEBINFO builds.
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//Path to a program.
CMAKE_STRIP:FILEPATH=/usr/bin/strip
//If this value is on, makefiles will be generated without the
// .SILENT directive, and all commands will be echoed to the console
// during the make. This is useful for debugging only. With Visual
// Studio IDE projects all commands are done without /nologo.
CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
//Compile device code in 64 bit mode
CUDA_64_BIT_DEVICE_CODE:BOOL=ON
//Attach the build rule to the CUDA source file. Enable only when
// the CUDA source file is added to at most one target.
CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE:BOOL=ON
//Generate and parse .cubin files in Device mode.
CUDA_BUILD_CUBIN:BOOL=OFF
//Build in Emulation mode
CUDA_BUILD_EMULATION:BOOL=OFF
//Directory to put all the output files. If blank it will default
// to the CMAKE_CURRENT_BINARY_DIR
CUDA_GENERATED_OUTPUT_DIR:PATH=
//Generated file extension
CUDA_HOST_COMPILATION_CPP:BOOL=ON
//Host side compiler used by NVCC
CUDA_HOST_COMPILER:FILEPATH=/usr/bin/cc
//Semi-colon delimit multiple arguments. during all build types.
CUDA_NVCC_FLAGS:STRING=
//Semi-colon delimit multiple arguments. during DEBUG builds.
CUDA_NVCC_FLAGS_DEBUG:STRING=
//Semi-colon delimit multiple arguments. during MINSIZEREL builds.
CUDA_NVCC_FLAGS_MINSIZEREL:STRING=
//Semi-colon delimit multiple arguments. during RELEASE builds.
CUDA_NVCC_FLAGS_RELEASE:STRING=
//Semi-colon delimit multiple arguments. during RELWITHDEBINFO
// builds.
CUDA_NVCC_FLAGS_RELWITHDEBINFO:STRING=
//Propagate C/CXX_FLAGS and friends to the host compiler via -Xcompile
CUDA_PROPAGATE_HOST_FLAGS:BOOL=ON
//Compile CUDA objects with separable compilation enabled. Requires
// CUDA 5.0+
CUDA_SEPARABLE_COMPILATION:BOOL=OFF
//Print out the commands run while compiling the CUDA source file.
// With the Makefile generator this defaults to VERBOSE variable
// specified on the command line, but can be forced on with this
// option.
CUDA_VERBOSE_BUILD:BOOL=OFF
//Build diffvg with GPU code path?
DIFFVG_CUDA:BOOL=0
//Force new FindPython
PYBIND11_FINDPYTHON:BOOL=OFF
//Install pybind11 header files?
PYBIND11_INSTALL:BOOL=OFF
//Disable search for Python
PYBIND11_NOPYTHON:BOOL=OFF
//Build pybind11 test suite?
PYBIND11_TEST:BOOL=OFF
//Path to a file.
PYTHON_INCLUDE_DIR:PATH=/usr/include/python3.11
//No help, variable specified on the command line.
PYTHON_INCLUDE_PATH:UNINITIALIZED=/usr/include/python3.10
//Path to a library.
PYTHON_LIBRARY:FILEPATH=/usr/lib64
//Path to a library.
PYTHON_LIBRARY_DEBUG:FILEPATH=PYTHON_LIBRARY_DEBUG-NOTFOUND
//Path to a file.
THRUST_INCLUDE_DIR:PATH=/home/kahr/Projects/bachelors_project/diffvg/thrust
//Value Computed by CMake
diffvg_BINARY_DIR:STATIC=/home/kahr/Projects/bachelors_project/diffvg
//Value Computed by CMake
diffvg_IS_TOP_LEVEL:STATIC=ON
//Value Computed by CMake
diffvg_SOURCE_DIR:STATIC=/home/kahr/Projects/bachelors_project/diffvg
//Value Computed by CMake
pybind11_BINARY_DIR:STATIC=/home/kahr/Projects/bachelors_project/diffvg/pybind11
//Value Computed by CMake
pybind11_IS_TOP_LEVEL:STATIC=OFF
//Value Computed by CMake
pybind11_SOURCE_DIR:STATIC=/home/kahr/Projects/bachelors_project/diffvg/pybind11
########################
# INTERNAL cache entries
########################
//ADVANCED property for variable: CMAKE_ADDR2LINE
CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_AR
CMAKE_AR-ADVANCED:INTERNAL=1
//This is the directory where this CMakeCache.txt was created
CMAKE_CACHEFILE_DIR:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg
//Major version of cmake used to create the current loaded cache
CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
//Minor version of cmake used to create the current loaded cache
CMAKE_CACHE_MINOR_VERSION:INTERNAL=26
//Patch version of cmake used to create the current loaded cache
CMAKE_CACHE_PATCH_VERSION:INTERNAL=3
//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
//Path to CMake executable.
CMAKE_COMMAND:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg/.venv/lib/python3.10/site-packages/cmake/data/bin/cmake
//Path to cpack program executable.
CMAKE_CPACK_COMMAND:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg/.venv/lib/python3.10/site-packages/cmake/data/bin/cpack
//Path to ctest program executable.
CMAKE_CTEST_COMMAND:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg/.venv/lib/python3.10/site-packages/cmake/data/bin/ctest
//ADVANCED property for variable: CMAKE_CXX_COMPILER
CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR
CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB
CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_COMPILER
CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_COMPILER_AR
CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS
CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_DLLTOOL
CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
//Executable file format
CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
//Name of external makefile project generator.
CMAKE_EXTRA_GENERATOR:INTERNAL=
//Name of generator.
CMAKE_GENERATOR:INTERNAL=Unix Makefiles
//Generator instance identifier.
CMAKE_GENERATOR_INSTANCE:INTERNAL=
//Name of generator platform.
CMAKE_GENERATOR_PLATFORM:INTERNAL=
//Name of generator toolset.
CMAKE_GENERATOR_TOOLSET:INTERNAL=
//Source directory with the top level CMakeLists.txt file for this
// project
CMAKE_HOME_DIRECTORY:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg
//ADVANCED property for variable: CMAKE_INSTALL_BINDIR
CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_INSTALL_DATADIR
CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_INSTALL_DATAROOTDIR
CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_INSTALL_DOCDIR
CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_INSTALL_INCLUDEDIR
CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_INSTALL_INFODIR
CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_INSTALL_LIBDIR
CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_INSTALL_LIBEXECDIR
CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_INSTALL_LOCALEDIR
CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_INSTALL_LOCALSTATEDIR
CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_INSTALL_MANDIR
CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_INSTALL_OLDINCLUDEDIR
CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_INSTALL_RUNSTATEDIR
CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_INSTALL_SBINDIR
CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_INSTALL_SHAREDSTATEDIR
CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1
//Install .so files without execute permission.
CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
//ADVANCED property for variable: CMAKE_INSTALL_SYSCONFDIR
CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_LINKER
CMAKE_LINKER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_NM
CMAKE_NM-ADVANCED:INTERNAL=1
//number of local generators
CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=2
//ADVANCED property for variable: CMAKE_OBJCOPY
CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_OBJDUMP
CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
//Platform information initialized
CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
//ADVANCED property for variable: CMAKE_RANLIB
CMAKE_RANLIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_READELF
CMAKE_READELF-ADVANCED:INTERNAL=1
//Path to CMake installation.
CMAKE_ROOT:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg/.venv/lib/python3.10/site-packages/cmake/data/share/cmake-3.26
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SKIP_RPATH
CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STRIP
CMAKE_STRIP-ADVANCED:INTERNAL=1
//uname command
CMAKE_UNAME:INTERNAL=/usr/bin/uname
//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CUDA_64_BIT_DEVICE_CODE
CUDA_64_BIT_DEVICE_CODE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE
CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CUDA_BUILD_CUBIN
CUDA_BUILD_CUBIN-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CUDA_BUILD_EMULATION
CUDA_BUILD_EMULATION-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CUDA_GENERATED_OUTPUT_DIR
CUDA_GENERATED_OUTPUT_DIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CUDA_HOST_COMPILATION_CPP
CUDA_HOST_COMPILATION_CPP-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CUDA_NVCC_FLAGS
CUDA_NVCC_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CUDA_NVCC_FLAGS_DEBUG
CUDA_NVCC_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CUDA_NVCC_FLAGS_MINSIZEREL
CUDA_NVCC_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CUDA_NVCC_FLAGS_RELEASE
CUDA_NVCC_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CUDA_NVCC_FLAGS_RELWITHDEBINFO
CUDA_NVCC_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CUDA_PROPAGATE_HOST_FLAGS
CUDA_PROPAGATE_HOST_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CUDA_SEPARABLE_COMPILATION
CUDA_SEPARABLE_COMPILATION-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CUDA_VERBOSE_BUILD
CUDA_VERBOSE_BUILD-ADVANCED:INTERNAL=1
//Details about finding Python
FIND_PACKAGE_MESSAGE_DETAILS_Python:INTERNAL=[/usr/include/python3.11][/usr/lib64/libpython3.11.so][cfound components: Development Development.Module Development.Embed ][v3.11.3(3.7)]
//Details about finding PythonLibs
FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs:INTERNAL=[/usr/lib64][/usr/include/python3.11][v3.11.3()]
//Test HAS_FLTO
HAS_FLTO:INTERNAL=1
PYBIND11_INCLUDE_DIR:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg/pybind11/include
//ADVANCED property for variable: PYTHON_INCLUDE_DIR
PYTHON_INCLUDE_DIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: PYTHON_LIBRARY
PYTHON_LIBRARY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: PYTHON_LIBRARY_DEBUG
PYTHON_LIBRARY_DEBUG-ADVANCED:INTERNAL=1
//linker supports push/pop state
_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE
//CMAKE_INSTALL_PREFIX during last run
_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/usr/local
_Python:INTERNAL=Python
//Path to a program.
_Python_CONFIG:INTERNAL=/usr/bin/python3.11-config
//Compiler reason failure
_Python_Compiler_REASON_FAILURE:INTERNAL=
_Python_DEVELOPMENT_EMBED_SIGNATURE:INTERNAL=1ccd49388e5a8b4a61d75bca3e42d5ee
_Python_DEVELOPMENT_MODULE_SIGNATURE:INTERNAL=5cfb69aa044db11e10ae2019970ae537
//Development reason failure
_Python_Development_REASON_FAILURE:INTERNAL=
//Path to a file.
_Python_INCLUDE_DIR:INTERNAL=/usr/include/python3.11
//Interpreter reason failure
_Python_Interpreter_REASON_FAILURE:INTERNAL=
//Path to a library.
_Python_LIBRARY_RELEASE:INTERNAL=/usr/lib64/libpython3.11.so
//NumPy reason failure
_Python_NumPy_REASON_FAILURE:INTERNAL=
//true if pybind11 and all required components found on the system
pybind11_FOUND:INTERNAL=TRUE
//Directory where pybind11 headers are located
pybind11_INCLUDE_DIR:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg/pybind11/include

View File

@@ -4,36 +4,21 @@ import torch
from random import uniform
import math
import pydiffvg
from util import rgb2hex, any_map
from util import rgb2hex
class Point:
"""2D point, optionally with control points;
alternatively, 2-vector"""
def __init__(self, x: float, y: float,
controls: list[Point] = None,
round=False):
if isinstance(x, torch.Tensor):
# Convert from tensor
x = x.item()
y = y.item()
self.id = id(self)
self.x = x
self.y = y
self.controls = controls or []
if round:
self.round()
def add_control(self, control: Point):
self.controls.append(control)
def add_to_patch(self, patch: Patch):
self.patches.append(patch)
def as_xy(self):
return [self.x, self.y]
@@ -41,27 +26,19 @@ class Point:
self.x = int(self.x * 100) / 100.0
self.y = int(self.y * 100) / 100.0
def replace(self, pt: Point):
""""Replace (x,y) coordinates of point while maintaining pointer."""
self.x = pt.x
self.y = pt.y
return self
def add(self, pt: Point):
self.x += pt.x
self.y += pt.y
for cp in self.controls:
cp.x += pt.x
cp.y += pt.y
return self
def mult(self, pt: Point):
self.x *= pt.x
self.y *= pt.y
for cp in self.controls:
cp.x *= pt.x
cp.y *= pt.y
def equalize(self, other):
self.id = other.id
return self
@classmethod
def random(cls, rx=(0, 1), ry=(0, 1)):
@@ -73,67 +50,48 @@ class Point:
out.round()
return out
def __eq__(self, other):
return self.id == other.id
def __hash__(self):
return self.id
# Used for removing duplicate points
return id(self)
def __repr__(self):
return f"P<({self.x}, {self.y})[{len(self.controls)}]>"
return f"P<({self.x}, {self.y})>"
def __str__(self):
return self.__repr__()
class Patch:
"""Cubic patch."""
def __init__(self, points: list[Point], color=(0.2, 0.5, 0.7, 1.0)):
"""Bicubic patch."""
def __init__(self,
points: list[Point],
controls: list[list[Point]],
color=(0.2, 0.5, 0.7, 1.0)):
self.points = points
self.controls = controls
self.color = color
def translate(self, pt: Point):
for p in self.points:
p.add(pt)
for q in self.controls:
for p in q:
p.add(pt)
def scale(self, pt: Point):
for p in self.points:
p.mult(pt)
def as_path(self, width=256, height=256) -> pydiffvg.Path:
ppoints = []
for pt in self.points:
ppoints.append([pt.x * width, pt.y * height])
for cpt in pt.controls:
ppoints.append([cpt.x * width, cpt.y * height])
return pydiffvg.Path(
num_control_points=torch.tensor(
[len(p.controls) for p in self.points]
),
points=torch.tensor(ppoints, requires_grad=True),
is_closed=True
)
def as_shape_group(self, color=None) -> pydiffvg.ShapeGroup:
# TODO proper id handling
return pydiffvg.ShapeGroup(
shape_ids=torch.tensor([0]),
fill_color=torch.tensor(color or self.color, requires_grad=True)
)
def get_points(self):
out = []
for p in self.points:
out.append([p.x, p.y])
for cp in p.controls:
out.append([cp.x, cp.y])
return out
for q in self.controls:
for p in q:
p.mult(pt)
@classmethod
def random(cls, degree=4, num_control_points=2):
num_control_points = [num_control_points] * degree
"""Returns a random Patch with `degree` vertices
and `num_control_points` control points per edge."""
# Random tweaks to regular polygon base
angle = 2 * math.pi / degree
@@ -156,6 +114,7 @@ class Patch:
points.append(pt)
control_points = []
for i in range(len(num_control_points)):
pt = points[i]
npt = points[i+1 if i+1 < degree else 0]
@@ -164,15 +123,14 @@ class Patch:
dx = (npt.x - pt.x) / (ncp + 1)
dy = (npt.y - pt.y) / (ncp + 1)
for j in range(1, ncp+1):
midpoint = Point(
control_points.append([
Point(
pt.x + j * dx * uniform(0.8, 1.2) + uniform(0, 0.2),
pt.y + j * dy * uniform(0.8, 1.2) + uniform(0, 0.2)
)
) for j in range(1, ncp+1)
])
pt.add_control(midpoint)
out = cls(points)
out = cls(points, control_points)
out.color = (
uniform(0, 1),
uniform(0, 1),
@@ -189,8 +147,11 @@ class Patch:
class Quad(Patch):
"""Quadrilateral bicubic patch."""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Assign 4 vertices as self.{top, bototm, left, right}
self.top, self.right, self.bottom, self.left = self.points
by_y = sorted(self.points, key=lambda pt: pt.y)
self.top, self.bottom = by_y[0], by_y[-1]
@@ -199,184 +160,141 @@ class Quad(Patch):
key=lambda pt: pt.x)
self.left, self.right = by_x
for pt in by_y:
pt.round()
# Assign 4 edges as self.{northeat, southeast, southwest, northwest}
self.northeast = self.controls[self.points.index(self.top)]
self.southeast = self.controls[self.points.index(self.right)]
self.southwest = self.controls[self.points.index(self.bottom)]
self.northwest = self.controls[self.points.index(self.left)]
@classmethod
def from_path_points(cls, pp, color=None):
pt = None
points = []
for i in range(len(pp)):
if i % (len(pp) // 4) == 0:
if pt:
points.append(pt)
pt = Point(*pp[i])
else:
pt.add_control(Point(*pp[i]))
self.set_points()
points.append(pt)
return cls(points, color)
def set_points(self):
"""Reset self.points and self.controls; used after mutating
e.g. self.top, self.southwest &c."""
self.points = [self.left, self.top,
self.right, self.bottom]
def to_path_points(self):
self.controls = [self.northwest, self.northeast,
self.southeast, self.southwest]
class PointMapping:
"""Mapping of unique points in a mesh to separate shapes for diffvg."""
def __init__(self, points, controls, raw_points, colors):
self.points = points
self.controls = controls
self.raw_points = raw_points
self.data = torch.tensor(
[pt.as_xy() for pt in raw_points], requires_grad=True
)
self.colors = colors
def as_shapes(self):
out = []
for pt in self.points:
out.append(pt.as_xy())
for cp in pt.controls:
out.append(cp.as_xy())
return out
for i in range(len(self.points)):
quad = self.points[i]
quadpoints = []
for j in range(len(quad)):
quadpoints.append(quad[j])
quadpoints += self.controls[i][j]
out.append(quadpoints)
return [torch.stack(x) for x in
any_map(lambda idx: self.data[idx], out)]
class GradientMesh:
"""Bicubic quadrilateral mesh."""
def __init__(self, *quads: Quad):
self.quads = quads
def as_shape_groups(self):
sg = [quad.as_shape_group() for quad in self.quads]
for i in range(len(sg)):
sg[i].shape_ids = torch.tensor([i])
return sg
def as_shapes(self, width, height):
return [quad.as_path(width, height) for quad in self.quads]
def to_numbers(self):
def as_mapping(self):
"""Convert GradientMesh to PointMapping"""
points = []
controls = []
for quad in self.quads:
qp = []
qcp = []
for p in quad.points:
qp.append([p.x, p.y])
qcp.append([[cp.x, cp.y] for cp in p.controls])
points.append(qp)
controls.append(qcp)
raw_points = []
return [points, controls, [q.color for q in self.quads]]
def from_numbers(self, numbers):
points, controls, colors = numbers
for q in range(4):
self.quads[q].color = colors[q]
pts = points[q]
ctrls = controls[q]
for p in range(4):
self.quads[q].points[p].replace(Point(*pts[p]))
for c in range(len(self.quads[q].points[p].controls)):
self.quads[q].points[p].controls[c].replace(
Point(*ctrls[p][c])
)
@classmethod
def from_path_points(cls, pp, colors):
a, b, c, d = [Quad.from_path_points(pp[x], colors[x])
for x in range(len(pp))]
join_quads(a, b, c, d, scale=False, translate=False)
return cls(a, b, c, d)
def to_path_points(self):
out = []
for q in self.quads:
out.append(q.to_path_points())
return out
points.append(q.points)
controls.append(q.controls)
raw_points += q.points
for cp in q.controls:
raw_points += cp
def to_point_map(self):
# XXX this doesn't work
# because of control points
pts: list[Point] = []
template: list[list[int]] = []
raw_points = list(set(raw_points))
for quad in self.quads:
for pt in quad.points:
pts.append(pt)
points = any_map(lambda p: raw_points.index(p), points)
controls = any_map(lambda p: raw_points.index(p), controls)
pts = list(dict.fromkeys(pts))
colors = torch.tensor([q.color for q in self.quads],
requires_grad=True)
for idx in range(len(self.quads)):
template.append([
pts.index(pt) for pt in self.quads[idx].points
])
return PointMapping(points, controls, raw_points, colors)
return (pts, template)
def from_point_map(self, pts, template):
# XXX this not either
mapped = []
for q in template:
mapped.append([
pts[x] for x in q
])
return mapped
def from_mapping(self, mapping: PointMapping):
pass
def average_points(points: list[Point]) -> Point:
def average_points(*points: list[Point]) -> Point:
"""Average (i.e. geometric center) of points."""
x = sum([pt.x for pt in points]) / len(points)
y = sum([pt.y for pt in points]) / len(points)
return Point(x, y)
def equalize_points(points: list[Point]):
first = points[0]
for pt in points:
pt.equalize(first)
def join_quads(a: Quad, b: Quad, c: Quad, d: Quad,
scale=True, translate=True,
step=10):
"""Join 4 quadrilaterals so that they form a mesh with a center point."""
def combine_cp(cpa, cpb):
return [average_points(a, b) for a, b in zip(cpa, cpb)]
def equalize_cp(points: list[Point]):
first = points[0].controls[0]
for pt in points:
for cp in pt.controls:
cp.equalize(first)
def merge_points(points: list[Point]):
merged = average_points(points)
for pt in points:
pt.replace(merged)
def merge_cp(points: list[Point]):
ct1 = points[0].controls
ct2 = points[1].controls[::-1]
for i in range(len(ct1)):
merged = average_points([ct1[i], ct2[i]])
ct1[i].replace(merged)
ct2[i].replace(merged)
def join_quads(a: Quad, b: Quad, c: Quad, d: Quad, scale=True, translate=True):
if translate:
b.translate(a.top)
c.translate(a.right)
d.translate(a.bottom)
merge_points([a.right, b.bottom, c.left, d.top])
merge_points([a.top, b.left])
merge_points([a.bottom, d.left])
merge_points([b.right, c.top])
merge_points([c.bottom, d.right])
# If each quad occupies full space, make it so that they occupy 1/4 of space
if scale:
a.scale(Point(0.5, 0.5))
b.scale(Point(0.5, 0.5))
c.scale(Point(0.5, 0.5))
d.scale(Point(0.5, 0.5))
merge_cp([a.right, d.left])
merge_cp([a.top, b.bottom])
merge_cp([c.left, b.right])
merge_cp([c.bottom, d.top])
# If quads are on top of each other, translate so they are not
if translate:
b.translate(a.top)
c.translate(a.right)
d.translate(a.bottom)
equalize_points([a.right, b.bottom, c.left, d.top])
equalize_points([a.top, b.left])
equalize_points([a.bottom, d.left])
equalize_points([b.right, c.top])
equalize_points([c.bottom, d.right])
# Equalize centerpoint
a.right, b.bottom, c.left, d.top = [
average_points(a.right, b.bottom, c.left, d.top)
] * 4
equalize_cp([a.right, d.left])
equalize_cp([a.top, b.bottom])
equalize_cp([c.left, b.right])
equalize_cp([c.bottom, d.top])
# Equalize non-center shared points
a.top, b.left = [average_points(a.top, b.left)] * 2
a.bottom, d.left = [average_points(a.bottom, d.left)] * 2
b.right, c.top = [average_points(b.right, c.top)] * 2
c.bottom, d.right = [average_points(c.bottom, d.right)] * 2
# Equalize edges
a.northeast, b.southwest = (
(comb := combine_cp(a.northeast, b.southwest)),
comb[::-1]
)
b.southeast, c.northwest = (
(comb := combine_cp(b.southeast, c.northwest)),
comb[::-1]
)
c.southwest, d.northeast = (
(comb := combine_cp(c.southwest, d.northeast)),
comb[::-1]
)
d.northwest, a.southeast = (
(comb := combine_cp(d.northwest, a.southeast)),
comb[::-1]
)
# Update points
for q in [a, b, c, d]:
q.set_points()

72
gradientmesh/gmtypes2.py Normal file
View File

@@ -0,0 +1,72 @@
#!/usr/bin/env python3
from __future__ import annotations
from typing import TypeAlias
from random import uniform
import torch
Point: TypeAlias = torch.FloatTensor
Vector: TypeAlias = Point
Color: TypeAlias = torch.FloatTensor
def indexize_tensor(tensor, eps=1e-5):
"""Take tensor of quads to flat list of points plus index map."""
tensor_shape = tensor.shape
tensor = tensor.view(-1, tensor_shape[-1])
# Round tensor elements to handle floating point precision errors
tensor = torch.round(tensor / eps) * eps
# Compute unique rows and their indices
tensor, inverse_indices = tensor.unique(dim=0, return_inverse=True)
# Compute index tensor
index_tensor = inverse_indices.view(tensor_shape[:-1])
return tensor, index_tensor
def ferguson_to_bezier(corner_points, tangent_vectors):
"""Take Ferguson patch to Bezier representation"""
# Assume corner_points is a list of 4 points [P0, P1, P2, P3] and
# tangent_vectors is a list of 4 vectors [V0, V1, V2, V3]
# Bezier control points
bezier_points = [None]*12
# Use tangent vectors to determine interior points and place them in the order
for i in range(4):
bezier_points[3*i] = corner_points[i]
bezier_points[3*i + 1] = corner_points[i] + tangent_vectors[i]/3
bezier_points[3*i + 2] = corner_points[i] + 2*tangent_vectors[i]/3
return bezier_points
class Mesh:
def __init__(self, points, tangents, colors):
self.fpoints, self.ipoints = indexize_tensor(points)
self.ftangents, self.itangents = indexize_tensor(tangents)
self.colors = colors
@classmethod
def grid(cls, width, height):
dx = 1.0 / width
dy = 1.0 / height
points = []
tangents = []
colors = []
for i in range(width):
for j in range(height):
x1, y1 = i * dx, j * dy
x2, y2 = (i+1) * dx, (j+1) * dy
# Clockwise order: bottom left, bottom right, top right, top left
square = [[x1, y1], [x2, y1], [x2, y2], [x1, y2]]
points.append(square)
tangents.append([[0.0, 0.0] for _ in range(4)])
colors.append([uniform(0, 1) for _ in range(3)] + [1.0])
return cls(torch.tensor(points),
torch.tensor(tangents),
torch.tensor(colors))

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

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