Merge branch 'SoftFever:main' into main

This commit is contained in:
Bernhard Koppensteiner 2024-05-31 19:56:41 +02:00 committed by GitHub
commit 2bbbb7232c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
1047 changed files with 39548 additions and 15240 deletions

View file

@ -59,3 +59,20 @@ jobs:
arch: ${{ matrix.arch }}
build-deps-only: ${{ inputs.build-deps-only || false }}
secrets: inherit
flatpak:
name: "Flatpak"
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:gnome-45
options: --privileged
steps:
# maybe i'm too dumb and fucked up to do CI. OH WELL :D -ppd
- name: "Remove unneeded stuff to free disk space"
run:
sudo rm -rf /usr/share/dotnet /opt/ghc "/usr/local/share/boost" "$AGENT_TOOLSDIRECTORY"
- uses: actions/checkout@v4
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
bundle: orcaslicer.flatpak
manifest-path: flatpak/io.github.softfever.OrcaSlicer.yml
cache-key: flatpak-builder-${{ github.sha }}

1
.gitignore vendored
View file

@ -32,4 +32,5 @@ src/OrcaSlicer-doc/
**/filament_full/
/deps/DL_CACHE/
/deps/DL_CACHE
**/.flatpak-builder/
resources/profiles/user/default

View file

@ -271,9 +271,18 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431
# We will turn the warning of for GCC for now:
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# GCC generates loads of -Wunknown-pragmas when compiling igl. The fix is not easy due to a bug in gcc, see
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66943 or
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431
# We will turn the warning of for GCC for now:
add_compile_options(-Wno-unknown-pragmas)
endif()
# Bit of a hack for flatpak building: compress the debug info with zstd to save space in CI
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0)
add_compile_options(-gz=zstd)
endif()
endif()
if (SLIC3R_ASAN)
@ -382,9 +391,7 @@ endif()
# set(Boost_COMPILER "-mgw81")
# boost::process was introduced first in version 1.64.0,
# boost::beast::detail::base64 was introduced first in version 1.66.0
set(MINIMUM_BOOST_VERSION "1.66.0")
set(_boost_components "system;filesystem;thread;log;locale;regex;chrono;atomic;date_time;iostreams;program_options")
find_package(Boost ${MINIMUM_BOOST_VERSION} REQUIRED COMPONENTS ${_boost_components})
find_package(Boost 1.66 REQUIRED COMPONENTS system filesystem thread log locale regex chrono atomic date_time iostreams program_options)
add_library(boost_libs INTERFACE)
add_library(boost_headeronly INTERFACE)
@ -410,28 +417,8 @@ function(slic3r_remap_configs targets from_Cfg to_Cfg)
endif()
endfunction()
if(TARGET Boost::system)
message(STATUS "Boost::boost exists")
target_link_libraries(boost_headeronly INTERFACE Boost::boost)
# Only from cmake 3.12
# list(TRANSFORM _boost_components PREPEND Boost:: OUTPUT_VARIABLE _boost_targets)
set(_boost_targets "")
foreach(comp ${_boost_components})
list(APPEND _boost_targets "Boost::${comp}")
endforeach()
target_link_libraries(boost_libs INTERFACE
boost_headeronly # includes the custom compile definitions as well
${_boost_targets}
)
slic3r_remap_configs("${_boost_targets}" RelWithDebInfo Release)
else()
target_include_directories(boost_headeronly INTERFACE ${Boost_INCLUDE_DIRS})
target_link_libraries(boost_libs INTERFACE boost_headeronly ${Boost_LIBRARIES})
endif()
target_include_directories(boost_headeronly INTERFACE ${Boost_INCLUDE_DIRS})
target_link_libraries(boost_libs INTERFACE boost_headeronly ${Boost_LIBRARIES})
# Find and configure intel-tbb
if(SLIC3R_STATIC)

View file

@ -26,14 +26,16 @@
<string>????</string>
<key>CFBundleVersion</key>
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
<key>ATSApplicationFontsPath</key>
<string>fonts/</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>orcasliceropen url</string>
<string>OrcaSlicer Downloads</string>
<key>CFBundleURLSchemes</key>
<array>
<string>orcasliceropen</string>
<string>orcaslicer</string>
</array>
</dict>
</array>

119
deps/CMakeLists.txt vendored
View file

@ -42,6 +42,10 @@ endif ()
set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory")
set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/../DL_CACHE CACHE PATH "Path for downloaded source packages.")
set(FLATPAK FALSE CACHE BOOL "Toggles various build settings for flatpak, like /usr/local in DESTDIR or not building wxwidgets")
if (NOT FLATPAK)
set(DESTDIR "${DESTDIR}/usr/local/")
endif()
get_property(_is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
@ -120,13 +124,13 @@ if (NOT IS_CROSS_COMPILE OR NOT APPLE)
ExternalProject_Add(
dep_${projectname}
EXCLUDE_FROM_ALL ON
INSTALL_DIR ${DESTDIR}/usr/local
INSTALL_DIR ${DESTDIR}
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname}
${_gen}
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}/usr/local
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
-DCMAKE_MODULE_PATH:STRING=${PROJECT_SOURCE_DIR}/../cmake/modules
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}/usr/local
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}
-DCMAKE_DEBUG_POSTFIX:STRING=d
-DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
@ -140,16 +144,49 @@ if (NOT IS_CROSS_COMPILE OR NOT APPLE)
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release -- ${_build_j}
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config Release
)
elseif(FLATPAK)
# the only reason this is here is because of the HACK at the bottom for ci
#
# note for future devs: shared libs may actually create a size reduction
# but orcaslicer_deps tends to get really funny regarding linking after that (notably boost)
# so, as much as I would like to use that, it's not happening
ExternalProject_Add(
dep_${projectname}
EXCLUDE_FROM_ALL ON
INSTALL_DIR ${DESTDIR}
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname}
${_gen}
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
-DCMAKE_MODULE_PATH:STRING=${PROJECT_SOURCE_DIR}/../cmake/modules
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}
-DCMAKE_DEBUG_POSTFIX:STRING=d
-DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
-DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}
-DBUILD_SHARED_LIBS:BOOL=OFF
${_cmake_osx_arch}
"${_configs_line}"
${DEP_CMAKE_OPTS}
${P_ARGS_CMAKE_ARGS}
${P_ARGS_UNPARSED_ARGUMENTS}
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release -- ${_build_j}
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config Release
# HACK: save space after each compile job, because CI
# reasoning: cmake changes directory after this command, so just keep only the folders
# so that it can navigate out
COMMAND find "${CMAKE_BINARY_DIR}/dep_${projectname}-prefix/" -type f -delete
)
else()
ExternalProject_Add(
dep_${projectname}
EXCLUDE_FROM_ALL ON
INSTALL_DIR ${DESTDIR}/usr/local
INSTALL_DIR ${DESTDIR}
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname}
${_gen}
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}/usr/local
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}/usr/local
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}
-DBUILD_SHARED_LIBS:BOOL=OFF
${_cmake_osx_arch}
"${_configs_line}"
@ -203,6 +240,20 @@ else()
include("deps-linux.cmake")
endif()
if(FLATPAK)
# flatpak bundles some deps with the layer, so attempt to find them first
# also, yes, this reduces CI by not needing to vendor certain deps
find_package(ZLIB)
find_package(PNG)
find_package(EXPAT)
find_package(CURL)
find_package(JPEG)
find_package(TIFF)
find_package(Freetype)
find_package(OpenSSL 1.1...<3.2)
find_package(CURL)
endif()
set(ZLIB_PKG "")
if (NOT ZLIB_FOUND)
include(ZLIB/ZLIB.cmake)
@ -214,6 +265,7 @@ if (NOT PNG_FOUND)
set(PNG_PKG dep_PNG)
endif ()
set(EXPAT_PKG "")
find_package(EXPAT)
if (NOT EXPAT_FOUND)
include(EXPAT/EXPAT.cmake)
set(EXPAT_PKG dep_EXPAT)
@ -226,6 +278,7 @@ include(Boost/Boost.cmake)
include(Cereal/Cereal.cmake)
include(Qhull/Qhull.cmake)
include(GLEW/GLEW.cmake)
include(GLFW/GLFW.cmake)
include(OpenCSG/OpenCSG.cmake)
@ -241,34 +294,69 @@ include(CGAL/CGAL.cmake)
include(NLopt/NLopt.cmake)
include(OpenSSL/OpenSSL.cmake)
# I *think* 1.1 is used for *just* md5 hashing?
# 3.1 has everything in the right place, but the md5 funcs used are deprecated
# a grep across the repo shows it is used for other things
# TODO: update openssl and everything that uses <openssl/md5.h>
set(OPENSSL_PKG "")
if(NOT OPENSSL_FOUND)
include(OpenSSL/OpenSSL.cmake)
set(OPENSSL_PKG dep_OpenSSL)
endif()
# we don't want to load a "wrong" openssl when loading curl
# so, just don't even bother
# ...i think this is how it works? change if wrong
set(CURL_PKG "")
if (NOT CURL_FOUND)
if (NOT OPENSSL_FOUND OR NOT CURL_FOUND)
include(CURL/CURL.cmake)
set(CURL_PKG dep_CURL)
endif ()
include(JPEG/JPEG.cmake)
include(TIFF/TIFF.cmake)
include(wxWidgets/wxWidgets.cmake)
set(JPEG_PKG "")
if (NOT JPEG_FOUND)
include(JPEG/JPEG.cmake)
set(JPEG_PKG dep_JPEG)
endif()
set(TIFF_PKG "")
if (NOT TIFF_FOUND)
include(TIFF/TIFF.cmake)
set(TIFF_PKG "dep_TIFF")
endif()
# flatpak builds wxwidgets separately
set(WXWIDGETS_PKG "")
if (NOT FLATPAK)
include(wxWidgets/wxWidgets.cmake)
set(WXWIDGETS_PKG "dep_wxWidgets")
endif()
set(FREETYPE_PKG "")
if(NOT FREETYPE_FOUND)
include(FREETYPE/FREETYPE.cmake)
set(FREETYPE_PKG "dep_FREETYPE")
endif()
include(OCCT/OCCT.cmake)
include(OpenCV/OpenCV.cmake)
include(FREETYPE/FREETYPE.cmake)
set(_dep_list
dep_Boost
dep_TBB
${OPENSSL_PKG}
${CURL_PKG}
dep_wxWidgets
${WXWIDGETS_PKG}
dep_Cereal
dep_NLopt
dep_OpenVDB
dep_OpenCSG
dep_OpenCV
dep_CGAL
dep_OpenSSL
dep_GLFW
dep_OCCT
${FREETYPE_PKG}
${PNG_PKG}
${ZLIB_PKG}
${EXPAT_PKG}
@ -283,9 +371,6 @@ else()
#list(APPEND _dep_list "dep_libigl")
endif()
list(APPEND _dep_list "dep_OCCT")
list(APPEND _dep_list "dep_FREETYPE")
add_custom_target(deps ALL DEPENDS ${_dep_list})
# Note: I'm not using any of the LOG_xxx options in ExternalProject_Add() commands

View file

@ -72,9 +72,10 @@ orcaslicer_add_cmake_project(CURL
${_curl_platform_flags}
)
# if (APPLE OR (CMAKE_SYSTEM_NAME STREQUAL "Linux"))
add_dependencies(dep_CURL dep_OpenSSL)
# endif ()
if(NOT OPENSSL_FOUND)
# (openssl may or may not be built)
add_dependencies(dep_CURL ${OPENSSL_PKG})
endif()
if (MSVC)
add_debug_dep(dep_CURL)

15
deps/GMP/GMP.cmake vendored
View file

@ -1,17 +1,16 @@
set(_srcdir ${CMAKE_CURRENT_LIST_DIR}/gmp)
set(_dstdir ${DESTDIR}/usr/local)
if (MSVC)
set(_output ${_dstdir}/include/gmp.h
${_dstdir}/lib/libgmp-10.lib
${_dstdir}/bin/libgmp-10.dll)
set(_output ${DESTDIR}/include/gmp.h
${DESTDIR}/lib/libgmp-10.lib
${DESTDIR}/bin/libgmp-10.dll)
add_custom_command(
OUTPUT ${_output}
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/gmp.h ${_dstdir}/include/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libgmp-10.lib ${_dstdir}/lib/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libgmp-10.dll ${_dstdir}/bin/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/gmp.h ${DESTDIR}/include/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libgmp-10.lib ${DESTDIR}/lib/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libgmp-10.dll ${DESTDIR}/bin/
)
add_custom_target(dep_GMP SOURCES ${_output})
@ -61,7 +60,7 @@ else ()
URL_HASH SHA256=eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/GMP
BUILD_IN_SOURCE ON
CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --enable-shared=no --enable-cxx=yes --enable-static=yes "--prefix=${DESTDIR}/usr/local" ${_gmp_build_tgt}
CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --enable-shared=no --enable-cxx=yes --enable-static=yes "--prefix=${DESTDIR}" ${_gmp_build_tgt}
BUILD_COMMAND make -j
INSTALL_COMMAND make install
)

19
deps/MPFR/MPFR.cmake vendored
View file

@ -1,18 +1,17 @@
set(_srcdir ${CMAKE_CURRENT_LIST_DIR}/mpfr)
set(_dstdir ${DESTDIR}/usr/local)
if (MSVC)
set(_output ${_dstdir}/include/mpfr.h
${_dstdir}/include/mpf2mpfr.h
${_dstdir}/lib/libmpfr-4.lib
${_dstdir}/bin/libmpfr-4.dll)
set(_output ${DESTDIR}/include/mpfr.h
${DESTDIR}/include/mpf2mpfr.h
${DESTDIR}/lib/libmpfr-4.lib
${DESTDIR}/bin/libmpfr-4.dll)
add_custom_command(
OUTPUT ${_output}
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpfr.h ${_dstdir}/include/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpf2mpfr.h ${_dstdir}/include/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libmpfr-4.lib ${_dstdir}/lib/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libmpfr-4.dll ${_dstdir}/bin/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpfr.h ${DESTDIR}/include/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpf2mpfr.h ${DESTDIR}/include/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libmpfr-4.lib ${DESTDIR}/lib/
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libmpfr-4.dll ${DESTDIR}/bin/
)
add_custom_target(dep_MPFR SOURCES ${_output})
@ -31,7 +30,7 @@ else ()
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/MPFR
BUILD_IN_SOURCE ON
CONFIGURE_COMMAND autoreconf -f -i &&
env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --prefix=${DESTDIR}/usr/local --enable-shared=no --enable-static=yes --with-gmp=${DESTDIR}/usr/local ${_gmp_build_tgt}
env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --prefix=${DESTDIR} --enable-shared=no --enable-static=yes --with-gmp=${DESTDIR} ${_gmp_build_tgt}
BUILD_COMMAND make -j
INSTALL_COMMAND make install
DEPENDS dep_GMP

View file

@ -14,7 +14,7 @@ orcaslicer_add_cmake_project(OCCT
#PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch
PATCH_COMMAND git apply --directory ${BINARY_DIR_REL}/dep_OCCT-prefix/src/dep_OCCT --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch
#DEPENDS dep_Boost
#DEPENDS dep_FREETYPE
DEPENDS ${FREETYPE_PKG}
CMAKE_ARGS
-DBUILD_LIBRARY_TYPE=${library_build_type}
-DUSE_TK=OFF
@ -31,4 +31,4 @@ orcaslicer_add_cmake_project(OCCT
-DBUILD_MODULE_Visualization=OFF
)
add_dependencies(dep_OCCT dep_FREETYPE)
# add_dependencies(dep_OCCT ${FREETYPE_PKG})

View file

@ -15,11 +15,11 @@ if (APPLE AND IS_CROSS_COMPILE)
EXCLUDE_FROM_ALL ON
URL https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/v2.5.5.zip
URL_HASH SHA256=0307a3d7e1fa1e77e9d84d7e9a8694583fbbbfd50bdc6884e2c96b8ef6b902de
INSTALL_DIR ${DESTDIR}/usr/local
INSTALL_DIR ${DESTDIR}
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/OpenEXR
${_openxr_list_sep}
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}/usr/local
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
-DBUILD_SHARED_LIBS:BOOL=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DBUILD_TESTING=OFF

View file

@ -46,8 +46,8 @@ ExternalProject_Add(dep_OpenSSL
# URL_HASH SHA256=8c776993154652d0bb393f506d850b811517c8bd8d24b1008aef57fbe55d3f31
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/OpenSSL
CONFIGURE_COMMAND ${_conf_cmd} ${_cross_arch}
"--openssldir=${DESTDIR}/usr/local"
"--prefix=${DESTDIR}/usr/local"
"--openssldir=${DESTDIR}"
"--prefix=${DESTDIR}"
${_cross_comp_prefix_line}
no-shared
no-asm
@ -61,6 +61,6 @@ ExternalProject_Add(dep_OpenSSL
ExternalProject_Add_Step(dep_OpenSSL install_cmake_files
DEPENDEES install
COMMAND ${CMAKE_COMMAND} -E copy_directory openssl "${DESTDIR}/usr/local/${CMAKE_INSTALL_LIBDIR}/cmake/openssl"
COMMAND ${CMAKE_COMMAND} -E copy_directory openssl "${DESTDIR}${CMAKE_INSTALL_LIBDIR}/cmake/openssl"
WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}"
)

79
deps/TBB/GNU.cmake vendored Normal file
View file

@ -0,0 +1,79 @@
# Copyright (c) 2020-2021 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
if (MINGW)
set(TBB_LINK_DEF_FILE_FLAG "")
set(TBB_DEF_FILE_PREFIX "")
elseif (APPLE)
set(TBB_LINK_DEF_FILE_FLAG -Wl,-exported_symbols_list,)
set(TBB_DEF_FILE_PREFIX mac${TBB_ARCH})
# For correct ucontext.h structures layout
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -D_XOPEN_SOURCE)
else()
set(TBB_LINK_DEF_FILE_FLAG -Wl,--version-script=)
set(TBB_DEF_FILE_PREFIX lin${TBB_ARCH})
endif()
# Add -Wno-error=stringop-overflow to fix GCC 12+ build as suggested on https://github.com/oneapi-src/oneTBB/issues/843#issuecomment-1152646035
set(TBB_WARNING_LEVEL -Wall -Wextra $<$<BOOL:${TBB_STRICT}>:-Werror> -Wfatal-errors -Wno-error=stringop-overflow)
set(TBB_TEST_WARNING_FLAGS -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor)
# Depfile options (e.g. -MD) are inserted automatically in some cases.
# Don't add -MMD to avoid conflicts in such cases.
if (NOT CMAKE_GENERATOR MATCHES "Ninja" AND NOT CMAKE_CXX_DEPENDS_USE_COMPILER)
set(TBB_MMD_FLAG -MMD)
endif()
# Enable Intel(R) Transactional Synchronization Extensions (-mrtm) and WAITPKG instructions support (-mwaitpkg) on relevant processors
if (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86|AMD64)")
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -mrtm $<$<AND:$<NOT:$<CXX_COMPILER_ID:Intel>>,$<NOT:$<VERSION_LESS:${CMAKE_CXX_COMPILER_VERSION},11.0>>>:-mwaitpkg>)
endif()
if (NOT MINGW)
set(TBB_COMMON_LINK_LIBS dl)
endif()
# Ignore -Werror set through add_compile_options() or added to CMAKE_CXX_FLAGS if TBB_STRICT is disabled.
if (NOT TBB_STRICT AND COMMAND tbb_remove_compile_flag)
tbb_remove_compile_flag(-Werror)
endif()
if (NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL Intel)
# gcc 6.0 and later have -flifetime-dse option that controls elimination of stores done outside the object lifetime
set(TBB_DSE_FLAG $<$<NOT:$<VERSION_LESS:${CMAKE_CXX_COMPILER_VERSION},6.0>>:-flifetime-dse=1>)
endif()
# Workaround for heavy tests and too many symbols in debug (rellocation truncated to fit: R_MIPS_CALL16)
if ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "mips")
set(TBB_TEST_COMPILE_FLAGS ${TBB_TEST_COMPILE_FLAGS} -DTBB_TEST_LOW_WORKLOAD $<$<CONFIG:DEBUG>:-mxgot>)
endif()
if (MINGW)
list(APPEND TBB_COMMON_COMPILE_FLAGS -U__STRICT_ANSI__)
endif()
# For some reason GCC does not instrument code with Thread Sanitizer when lto is enabled and C linker is used.
if (NOT TBB_SANITIZE MATCHES "thread")
set(TBB_IPO_COMPILE_FLAGS $<$<NOT:$<CONFIG:Debug>>:-flto>)
set(TBB_IPO_LINK_FLAGS $<$<NOT:$<CONFIG:Debug>>:-flto>)
endif()
# Disable lto flag
set(TBB_IPO_COMPILE_FLAGS "")
set(TBB_IPO_LINK_FLAGS "")
# TBB malloc settings
set(TBBMALLOC_LIB_COMPILE_FLAGS -fno-rtti -fno-exceptions)
set(TBB_OPENMP_FLAG -fopenmp)

8
deps/TBB/TBB.cmake vendored
View file

@ -1,8 +1,14 @@
if (FLATPAK)
set(_patch_command ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/GNU.cmake ./cmake/compilers/GNU.cmake)
else()
set(_patch_command "")
endif()
orcaslicer_add_cmake_project(
TBB
URL "https://github.com/oneapi-src/oneTBB/archive/refs/tags/v2021.5.0.zip"
URL_HASH SHA256=83ea786c964a384dd72534f9854b419716f412f9d43c0be88d41874763e7bb47
#PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-TBB-GCC13.patch
PATCH_COMMAND ${_patch_command}
CMAKE_ARGS
-DTBB_BUILD_SHARED=OFF
-DTBB_BUILD_TESTS=OFF

View file

@ -17,11 +17,16 @@ else ()
set(_wx_edge "-DwxUSE_WEBVIEW_EDGE=OFF")
endif ()
# Note: The flatpak build builds wxwidgets separately due to CI size constraints.
# ANY CHANGES MADE IN HERE MUST ALSO BE REFLECTED IN `flatpak/io.github.SoftFever.OrcaSlicer.yml`.
# ** THIS INCLUDES BUILD ARGS. **
# ...if you can find a way around this size limitation, be my guest.
orcaslicer_add_cmake_project(
wxWidgets
GIT_REPOSITORY "https://github.com/SoftFever/Orca-deps-wxWidgets"
GIT_SHALLOW ON
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${TIFF_PKG} ${JPEG_PKG}
CMAKE_ARGS
-DwxBUILD_PRECOMP=ON
${_wx_toolkit}
@ -34,6 +39,7 @@ orcaslicer_add_cmake_project(
-DwxUSE_UNICODE=ON
${_wx_private_font}
-DwxUSE_OPENGL=ON
-DwxUSE_WEBREQUEST=ON
-DwxUSE_WEBVIEW=ON
${_wx_edge}
-DwxUSE_WEBVIEW_IE=OFF
@ -47,6 +53,7 @@ orcaslicer_add_cmake_project(
-DwxUSE_ZLIB=sys
-DwxUSE_LIBJPEG=sys
-DwxUSE_LIBTIFF=sys
-DwxUSE_NANOSVG=OFF
-DwxUSE_EXPAT=sys
)

2
flatpak/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
builddir
.flatpak-builder

3
flatpak/README.md Normal file
View file

@ -0,0 +1,3 @@
# OrcaSlicer
This is basically a copy of [com.bambulab.BambuStudio](https://github.com/flathub/com.bambulab.BambuStudio). As such, same rules apply here as does over there.

15
flatpak/entrypoint Normal file
View file

@ -0,0 +1,15 @@
#!/usr/bin/env sh
# Work-around https://gitlab.gnome.org/GNOME/gnome-build-meta/-/issues/754
grep -q org.freedesktop.Platform.GL.nvidia /.flatpak-info && export WEBKIT_DISABLE_DMABUF_RENDERER=1
# Work-around https://github.com/bambulab/BambuStudio/issues/3440
export LC_ALL=C.UTF-8
if [ $BAMBU_STUDIO_DARK_THEME == true ]; then
export GTK_THEME='Adwaita:dark'
# echo "Message: $(date +%T): INFO: using dark theme variant"
fi
exec /app/bin/orca-slicer "$@" &
$(/app/bin/set-dark-theme-variant.py) &

BIN
flatpak/images/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

BIN
flatpak/images/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 976 KiB

View file

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
<id>io.github.softfever.OrcaSlicer</id>
<launchable type="desktop-id">io.github.softfever.OrcaSlicer.desktop</launchable>
<provides>
<id>io.github.softfever.OrcaSlicer.desktop</id>
</provides>
<name>OrcaSlicer</name>
<!-- hehe hadess @ppd
... seriously though, thanks -->
<summary>Get even more perfect prints!</summary>
<developer_name>SoftFever</developer_name>
<url type="homepage">https://github.com/SoftFever/OrcaSlicer</url>
<url type="help">https://github.com/SoftFever/OrcaSlicer/wiki</url>
<url type="bugtracker">https://github.com/SoftFever/OrcaSlicer/issues/</url>
<url type="donation">https://ko-fi.com/SoftFever</url>
<metadata_license>0BSD</metadata_license>
<project_license>AGPL-3.0-only</project_license>
<content_rating type="oars-1.1" />
<requires>
<display_length compare="gt">768</display_length>
</requires>
<recommends>
<control>keyboard</control>
<control>pointing</control>
</recommends>
<screenshots>
<screenshot type="default">
<image>https://raw.githubusercontent.com/powpingdone/com.github.softfever.orcaslicer/master/images/1.png</image>
<caption>A model ready to be sliced on a buildplate.</caption>
</screenshot>
<screenshot>
<image>https://raw.githubusercontent.com/powpingdone/com.github.softfever.orcaslicer/master/images/2.png
</image>
<caption>A calibration test ready to be printed out.</caption>
</screenshot>
</screenshots>
<description>
<p>A 3D printer slicer forked from Bambu Studio, PrusaSlicer, and SuperSlicer with many more printer profiles, helpful calibration prints, and many more features to get your 3D printer printing perfectly!</p>
</description>
<branding>
<color type="primary" scheme_preference="light">#009688</color>
</branding>
<releases>
<release version="2.0.0-951fc8e" date="2024-01-30"> <url>https://github.com/SoftFever/OrcaSlicer/commit/951fc8e98a0d5ca0ccb254315646ce7889a44836</url>
</release>
</releases>
</component>

View file

@ -0,0 +1,344 @@
app-id: io.github.softfever.OrcaSlicer
runtime: org.gnome.Platform
runtime-version: "45"
sdk: org.gnome.Sdk
command: entrypoint
separate-locales: true
rename-icon: OrcaSlicer
finish-args:
- --share=ipc
- --socket=x11
- --share=network
- --device=all
- --filesystem=home
- --filesystem=xdg-run/gvfs
- --filesystem=/run/media
- --filesystem=/media
# Allow OrcaSlicer to talk to other instances
- --talk-name=io.github.softfever.OrcaSlicer.InstanceCheck.*
- --system-talk-name=org.freedesktop.UDisks2
# set dark theme
- --env=BAMBU_STUDIO_DARK_THEME=false
modules:
# JPEG codec for the liveview
- name: gst-plugins-good
buildsystem: meson
config-opts:
- -Dauto_features=disabled
- -Djpeg=enabled
- -Ddoc=disabled
- -Dexamples=disabled
- -Dtests=disabled
sources:
- type: archive
url: https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.22.8.tar.xz
sha256: e305b9f07f52743ca481da0a4e0c76c35efd60adaf1b0694eb3bb021e2137e39
# xprop, xlib is needed to manipulate the X11 window and set _GTK_THEME_VARIANT dark on X11
# and paint the window dark when PRUSA_SLICER_DARK_THEME is true
# see: entrypoint & set-dark-theme-variant.py (originated from spotify client flatpak)
- name: xprop
sources:
- type: archive
url: http://mirrors.ircam.fr/pub/x.org/individual/app/xprop-1.2.5.tar.gz
sha256: b7bf6b6be6cf23e7966a153fc84d5901c14f01ee952fbd9d930aa48e2385d670
- name: python-setuptools_scm
buildsystem: simple
build-commands:
- pip3 install --no-deps --no-build-isolation --verbose --prefix=${FLATPAK_DEST} .
sources:
- type: archive
url: https://files.pythonhosted.org/packages/57/38/930b1241372a9f266a7df2b184fb9d4f497c2cef2e016b014f82f541fe7c/setuptools_scm-6.0.1.tar.gz
sha256: d1925a69cb07e9b29416a275b9fadb009a23c148ace905b2fb220649a6c18e92
- name: python-xlib
buildsystem: simple
build-commands:
- pip3 install --no-deps --no-build-isolation --verbose --prefix=${FLATPAK_DEST} .
sources:
- type: archive
url: https://files.pythonhosted.org/packages/86/f5/8c0653e5bb54e0cbdfe27bf32d41f27bc4e12faa8742778c17f2a71be2c0/python-xlib-0.33.tar.gz
sha256: 55af7906a2c75ce6cb280a584776080602444f75815a7aff4d287bb2d7018b32
# For libOSMesa
- name: mesa
buildsystem: meson
config-opts:
- -Dosmesa=classic
- -Ddri-drivers=[]
- -Dgallium-drivers=[]
- -Dvulkan-drivers=[]
- -Dplatforms=[]
build-options:
arch:
aarch64:
config-opts:
- -Dlibunwind=disabled
cleanup:
- /share/drirc.d
- /include
- "*.a"
sources:
- type: archive
url: https://archive.mesa3d.org/mesa-20.2.6.tar.xz
sha256: f12ca3c6c622f11cd79ad66b4220f04514fa96f795062fe92a37339ab19885db
- name: glu
config-opts:
- --disable-static
sources:
- type: archive
url: https://ftp.osuosl.org/pub/blfs/conglomeration/glu/glu-9.0.2.tar.xz
sha256: 6e7280ff585c6a1d9dfcdf2fca489251634b3377bfc33c29e4002466a38d02d4
cleanup:
- /include
- /lib/*.a
- /lib/*.la
- /lib/pkgconfig
- name: kde-extra-cmake-modules
buildsystem: cmake-ninja
sources:
- type: git
url: https://github.com/KDE/extra-cmake-modules
tag: v5.249.0
cleanup:
- /
- name: orca_wxwidgets
buildsystem: simple
build-commands:
- |
mkdir builddir && cd builddir
cmake ../ -GNinja \
-DwxBUILD_PRECOMP=ON \
-DwxBUILD_TOOLKIT=gtk3 \
-DwxBUILD_DEBUG_LEVEL=0 \
-DwxBUILD_SAMPLES=OFF \
-DwxBUILD_SHARED=ON \
-DwxUSE_MEDIACTRL=ON \
-DwxUSE_DETECT_SM=OFF \
-DwxUSE_UNICODE=ON \
-DwxUSE_PRIVATE_FONTS=ON \
-DwxUSE_OPENGL=ON \
-DwxUSE_WEBREQUEST=ON \
-DwxUSE_WEBVIEW=ON \
-DwxUSE_WEBVIEW_EDGE=OFF \
-DwxUSE_WEBVIEW_IE=OFF \
-DwxUSE_REGEX=builtin \
-DwxUSE_LIBSDL=OFF \
-DwxUSE_XTEST=OFF \
-DwxUSE_STC=OFF \
-DwxUSE_AUI=ON \
-DwxUSE_LIBPNG=sys \
-DwxUSE_ZLIB=sys \
-DwxUSE_LIBJPEG=sys \
-DwxUSE_LIBTIFF=sys \
-DwxUSE_EXPAT=sys \
-DBUILD_SHARED_LIBS:BOOL=ON \
-DCMAKE_INSTALL_PREFIX:STRING=/app \
-DCMAKE_PREFIX_PATH=/app \
-DCMAKE_BUILD_TYPE=Release
cmake --build . --target install -j$FLATPAK_BUILDER_N_JOBS
sources:
- type: git
url: https://github.com/SoftFever/Orca-deps-wxWidgets
branch: master
path: ../
cleanup:
- "*.la"
- "*.a"
- "*.cmake"
- /include
- /app/bin/*
- name: orca_deps
buildsystem: simple
build-commands:
# start build
- |
mkdir deps/build && cd deps/build
cmake ../ \
-DDEP_WX_GTK3=ON \
-DDEP_DOWNLOAD_DIR=/run/build/orca_deps/external-packages \
-DCMAKE_PREFIX_PATH=/app \
-DDESTDIR=/app \
-DCMAKE_INSTALL_LIBDIR=/app/lib \
-DFLATPAK=ON \
-DCMAKE_INSTALL_PREFIX=/app
cmake --build .
rm -r /run/build/orca_deps/external-packages
cleanup:
- /app/include
- "*.a"
- "*.la"
- /app/lib/cmake
sources:
# -
# Section bellow fetches all OrcaSlicer dependencies before the build process and stores them in external-packages/*/* .
# -DDEP_DOWNLOAD_DIR is set in the build process which has to match with dest.
#
# NOTE: The url, dest folder name and sha256 must match from OrcaSlicer's cmake scripts and folder names in OrcaSlicer/deps/
# -
# OrcaSlicer Source Archive
- type: dir
path: ../
# Blosc
- type: file
url: https://github.com/tamasmeszaros/c-blosc/archive/refs/heads/v1.17.0_tm.zip
dest: external-packages/Blosc
sha256: dcb48bf43a672fa3de6a4b1de2c4c238709dad5893d1e097b8374ad84b1fc3b3
# Cereal
- type: file
url: https://github.com/USCiLab/cereal/archive/refs/tags/v1.3.0.zip
dest: external-packages/Cereal
sha256: 71642cb54658e98c8f07a0f0d08bf9766f1c3771496936f6014169d3726d9657
# CGAL
- type: file
url: https://github.com/CGAL/cgal/archive/refs/tags/v5.4.zip
dest: external-packages/CGAL
sha256: d7605e0a5a5ca17da7547592f6f6e4a59430a0bc861948974254d0de43eab4c0
# GMP
- type: file
url: https://github.com/SoftFever/OrcaSlicer_deps/releases/download/gmp-6.2.1/gmp-6.2.1.tar.bz2
dest: external-packages/GMP
sha256: eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c
# MPFR
- type: file
url: https://www.mpfr.org/mpfr-current/mpfr-4.2.1.tar.bz2
dest: external-packages/MPFR
sha256: b9df93635b20e4089c29623b19420c4ac848a1b29df1cfd59f26cab0d2666aa0
# NLopt
- type: file
url: https://github.com/stevengj/nlopt/archive/v2.5.0.tar.gz
dest: external-packages/NLopt
sha256: c6dd7a5701fff8ad5ebb45a3dc8e757e61d52658de3918e38bab233e7fd3b4ae
# OCCT
- type: file
url: https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_0.zip
dest: external-packages/OCCT
sha256: 28334f0e98f1b1629799783e9b4d21e05349d89e695809d7e6dfa45ea43e1dbc
# OpenCSG
- type: file
url: https://github.com/floriankirsch/OpenCSG/archive/refs/tags/opencsg-1-4-2-release.zip
dest: external-packages/OpenCSG
sha256: 51afe0db79af8386e2027d56d685177135581e0ee82ade9d7f2caff8deab5ec5
# OpenCV
- type: file
url: https://github.com/opencv/opencv/archive/refs/tags/4.6.0.tar.gz
dest: external-packages/OpenCV
sha256: 1ec1cba65f9f20fe5a41fda1586e01c70ea0c9a6d7b67c9e13edf0cfe2239277
# OpenEXR
- type: file
url: https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/v2.5.5.zip
dest: external-packages/OpenEXR
sha256: 0307a3d7e1fa1e77e9d84d7e9a8694583fbbbfd50bdc6884e2c96b8ef6b902de
# OpenVDB
- type: file
url: https://github.com/tamasmeszaros/openvdb/archive/a68fd58d0e2b85f01adeb8b13d7555183ab10aa5.zip
dest: external-packages/OpenVDB
sha256: f353e7b99bd0cbfc27ac9082de51acf32a8bc0b3e21ff9661ecca6f205ec1d81
# Qhull
- type: file
url: https://github.com/qhull/qhull/archive/v8.0.1.zip
dest: external-packages/Qhull
sha256: 5287f5edd6a0372588f5d6640799086a4033d89d19711023ef8229dd9301d69b
# TBB
- type: file
url: https://github.com/oneapi-src/oneTBB/archive/refs/tags/v2021.5.0.zip
dest: external-packages/TBB
sha256: 83ea786c964a384dd72534f9854b419716f412f9d43c0be88d41874763e7bb47
# Boost
- type: file
url: https://github.com/boostorg/boost/releases/download/boost-1.84.0/boost-1.84.0.tar.gz
dest: external-packages/Boost
sha256: 4d27e9efed0f6f152dc28db6430b9d3dfb40c0345da7342eaa5a987dde57bd95
# GLFW
- type: file
url: https://github.com/glfw/glfw/archive/refs/tags/3.3.7.zip
dest: external-packages/GLFW
sha256: e02d956935e5b9fb4abf90e2c2e07c9a0526d7eacae8ee5353484c69a2a76cd0
- name: OrcaSlicer
buildsystem: simple
build-commands:
- |
mkdir -p build && cd build
CXXFLAGS=-std=gnu++20 cmake ../ \
-DSLIC3R_PCH=OFF \
-DSLIC3R_FHS=ON \
-DSLIC3R_GTK=3 \
-DSLIC3R_STATIC=ON \
-DSLIC3R_BUILD_TESTS=OFF \
-DSLIC3R_DESKTOP_INTEGRATION=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DFLATPAK=ON \
-DBBL_RELEASE_TO_PUBLIC=1 \
-DCMAKE_PREFIX_PATH=/app \
-DCMAKE_INSTALL_PREFIX=/app
CXXFLAGS=-std=gnu++20 cmake --build . --target install -j$FLATPAK_BUILDER_N_JOBS
cleanup:
- /include
post-install:
- | # Desktop Integration files
install -Dm644 -t /app/share/icons/hicolor/scalable/apps/ resources/images/OrcaSlicer.svg
install -Dm644 ${FLATPAK_ID}.metainfo.xml /app/share/metainfo/${FLATPAK_ID}.metainfo.xml
mv /app/share/applications/OrcaSlicer.desktop /app/share/applications/${FLATPAK_ID}.desktop
desktop-file-edit --set-key=Exec --set-value="entrypoint %U" /app/share/applications/${FLATPAK_ID}.desktop
install -Dm755 set-dark-theme-variant.py /app/bin
install -Dm755 entrypoint /app/bin
install -Dm755 umount /app/bin
sources:
# -
# Section bellow fetches all OrcaSlicer dependencies before the build process and stores them in external-packages/*/* .
# -DDEP_DOWNLOAD_DIR is set in the build process which has to match with dest.
#
# NOTE: The url, dest folder name and sha256 must match from OrcaSlicer's cmake scripts and folder names in OrcaSlicer/deps/
# -
# OrcaSlicer Source Archive
- type: dir
path: ../
# AppData metainfo for Gnome Software & Co.
- type: file
path: io.github.softfever.OrcaSlicer.metainfo.xml
# script to set dark theme variant
- type: file
path: set-dark-theme-variant.py
# start-up script
# README: workaround for the following issues, also enables dark theme variant:
# SEE: https://github.com/flathub/com.bambulab.BambuStudio/issues/27
# SEE: https://github.com/flathub/com.bambulab.BambuStudio/issues/3
# SEE: https://github.com/prusa3d/PrusaSlicer/issues/2365
- type: file
path: entrypoint
# umount wrapper used to redirect umount calls to udisk2
- type: file
path: umount

View file

@ -0,0 +1,85 @@
#!/usr/bin/env python3
import Xlib
import Xlib.display
import time
import subprocess
import os
import sys
disp = Xlib.display.Display()
root = disp.screen().root
NET_CLIENT_LIST = disp.intern_atom('_NET_CLIENT_LIST')
def set_theme_variant_by_window_id(id, variant):
# Use subprocess to call
# xprop and set the variant from id.
try:
s = subprocess.call(['xprop', '-f', '_GTK_THEME_VARIANT', '8u', '-set', '_GTK_THEME_VARIANT', variant, '-id', str(id)],
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
if s == 0:
return True
return False
except Exception as ex:
return False
def set_theme_variant_from_win_id_collection(win_id_collection, variant):
# Loop though all of the collected
# window ids and set theme variant
for win_id in win_id_collection:
set_theme_variant_by_window_id(win_id, variant)
def collection_win_id_from_wm_class_name(win_class_name):
collect = []
# Loop though all of the windows
# and collect id's those that match
# win_class: prusa-slicer
for win_id in root.get_full_property(NET_CLIENT_LIST, Xlib.X.AnyPropertyType).value:
try:
win = disp.create_resource_object('window', win_id)
if not win.get_wm_transient_for():
win_class = win.get_wm_class()
if win_id and win_class_name in win_class:
collect.append(
win_id) if win_id not in collect else collect
except Xlib.error.BadWindow:
pass
return collect
if __name__ == '__main__':
if os.environ.get('PRUSA_SLICER_DARK_THEME', 'false') != 'true':
sys.exit(0)
# Listen for X Property Change events.
root.change_attributes(event_mask=Xlib.X.PropertyChangeMask)
# the class name of the slicer window
win_class_name = 'prusa-slicer'
# the variant to set
variant = 'dark'
start = time.time()
while True:
# collect all of the window ids
collect = collection_win_id_from_wm_class_name(win_class_name)
# give PrusaSlicer window 2 secs to
# collect the wanted window ids
# set the theme variant and exit
if time.time() - start <= 2:
# disp.next_event() blocks if no events are
# queued. In combination with while True
# it creates a very simple event loop.
disp.next_event()
set_theme_variant_from_win_id_collection(collect, variant)
else:
break

10
flatpak/umount Executable file
View file

@ -0,0 +1,10 @@
#!/usr/bin/env sh
if [ $# -eq 0 ]; then
echo "No arguments supplied"
exit 1
fi
DEVICE=$(basename $(findmnt -oSOURCE -n "$@") )
exec /usr/bin/gdbus call -y -d org.freedesktop.UDisks2 -o /org/freedesktop/UDisks2/block_devices/$DEVICE -m org.freedesktop.UDisks2.Filesystem.Unmount "{'b': <'false'>}" 1> /dev/null

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-05-01 00:42+0800\n"
"POT-Creation-Date: 2024-05-29 00:28+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -1354,9 +1354,6 @@ msgid ""
"Configuration file \"%1%\" was loaded, but some values were not recognized."
msgstr ""
msgid "V"
msgstr ""
msgid ""
"OrcaSlicer will terminate because of running out of memory.It may be a bug. "
"It will be appreciated if you report the issue to our team."
@ -1452,6 +1449,9 @@ msgstr ""
msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):"
msgstr ""
msgid "Choose ZIP file"
msgstr ""
msgid "Choose one file (gcode/3mf):"
msgstr ""
@ -1515,6 +1515,11 @@ msgstr ""
msgid "Select a G-code file:"
msgstr ""
msgid ""
"Could not start URL download. Destination folder is not set. Please choose "
"destination folder in Configuration Wizard."
msgstr ""
msgid "Import File"
msgstr ""
@ -1834,6 +1839,9 @@ msgstr ""
msgid "Add Handy models"
msgstr ""
msgid "Add Models"
msgstr ""
msgid "Show Labels"
msgstr ""
@ -2309,7 +2317,7 @@ msgstr ""
msgid "Connection to printer failed"
msgstr ""
msgid "Please check the network connection of the printer and Studio."
msgid "Please check the network connection of the printer and Orca."
msgstr ""
msgid "Connecting..."
@ -2633,10 +2641,7 @@ msgstr ""
msgid "GNU Affero General Public License, version 3"
msgstr ""
msgid ""
"Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer "
"by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and "
"the RepRap community"
msgid "Orca Slicer is based on PrusaSlicer and BambuStudio"
msgstr ""
msgid "Libraries"
@ -3078,6 +3083,219 @@ msgstr ""
msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue"
msgstr ""
msgid "Device"
msgstr ""
msgid "Task Sending"
msgstr ""
msgid "Task Sent"
msgstr ""
msgid "Edit multiple printers"
msgstr ""
msgid "Select connected printetrs (0/6)"
msgstr ""
#, possible-c-format, possible-boost-format
msgid "Select Connected Printetrs (%d/6)"
msgstr ""
#, possible-c-format, possible-boost-format
msgid "The maximum number of printers that can be selected is %d"
msgstr ""
msgid "Offline"
msgstr ""
msgid "No task"
msgstr ""
msgid "View"
msgstr ""
msgid "N/A"
msgstr ""
msgid "Edit Printers"
msgstr ""
msgid "Device Name"
msgstr ""
msgid "Task Name"
msgstr ""
msgid "Device Status"
msgstr ""
msgid "Actions"
msgstr ""
msgid ""
"Please select the devices you would like to manage here (up to 6 devices)"
msgstr ""
msgid "Add"
msgstr ""
msgid "Idle"
msgstr ""
msgid "Printing"
msgstr ""
msgid "Upgrading"
msgstr ""
msgid "Incompatible"
msgstr ""
msgid "syncing"
msgstr ""
msgid "Printing Finish"
msgstr ""
msgid "Printing Failed"
msgstr ""
msgid "PrintingPause"
msgstr ""
msgid "Prepare"
msgstr ""
msgid "Slicing"
msgstr ""
msgid "Pending"
msgstr ""
msgid "Sending"
msgstr ""
msgid "Sending Finish"
msgstr ""
msgid "Sending Cancel"
msgstr ""
msgid "Sending Failed"
msgstr ""
msgid "Print Success"
msgstr ""
msgid "Print Failed"
msgstr ""
msgid "Removed"
msgstr ""
msgid "Resume"
msgstr ""
msgid "Stop"
msgstr ""
msgid "Task Status"
msgstr ""
msgid "Sent Time"
msgstr ""
msgid "There are no tasks to be sent!"
msgstr ""
msgid "No historical tasks!"
msgstr ""
msgid "Loading..."
msgstr ""
msgid "No AMS"
msgstr ""
msgid "Send to Multi-device"
msgstr ""
msgid "Preparing print job"
msgstr ""
msgid "Abnormal print file data. Please slice again"
msgstr ""
msgid "There is no device available to send printing."
msgstr ""
msgid "The number of printers in use simultaneously cannot be equal to 0."
msgstr ""
msgid "Use External Spool"
msgstr ""
msgid "Use AMS"
msgstr ""
msgid "Select Printers"
msgstr ""
msgid "Ams Status"
msgstr ""
msgid "Printing Options"
msgstr ""
msgid "Bed Leveling"
msgstr ""
msgid "Timelapse"
msgstr ""
msgid "Flow Dynamic Calibration"
msgstr ""
msgid "Send Options"
msgstr ""
msgid "Send"
msgstr ""
msgid ""
"printers at the same time.(It depends on how many devices can undergo "
"heating at the same time.)"
msgstr ""
msgid "Wait"
msgstr ""
msgid ""
"minute each batch.(It depends on how long it takes to complete the heating.)"
msgstr ""
msgid "Name is invalid;"
msgstr ""
msgid "illegal characters:"
msgstr ""
msgid "illegal suffix:"
msgstr ""
msgid "The name is not allowed to be empty."
msgstr ""
msgid "The name is not allowed to start with space character."
msgstr ""
msgid "The name is not allowed to end with space character."
msgstr ""
msgid "The name length exceeds the limit."
msgstr ""
msgid "Origin"
msgstr ""
@ -3521,9 +3739,6 @@ msgstr ""
msgid "parameter name"
msgstr ""
msgid "N/A"
msgstr ""
#, possible-c-format, possible-boost-format
msgid "%s can't be percentage"
msgstr ""
@ -3838,9 +4053,6 @@ msgstr ""
msgid "Align to Y axis"
msgstr ""
msgid "Add"
msgstr ""
msgid "Add plate"
msgstr ""
@ -4017,15 +4229,9 @@ msgstr ""
msgid "Logging"
msgstr ""
msgid "Prepare"
msgstr ""
msgid "Preview"
msgstr ""
msgid "Device"
msgstr ""
msgid "Multi-device"
msgstr ""
@ -4053,9 +4259,6 @@ msgstr ""
msgid "Export G-code file"
msgstr ""
msgid "Send"
msgstr ""
msgid "Export plate sliced file"
msgstr ""
@ -4068,9 +4271,6 @@ msgstr ""
msgid "Send all"
msgstr ""
msgid "Send to Multi-device"
msgstr ""
msgid "Keyboard Shortcuts"
msgstr ""
@ -4179,6 +4379,12 @@ msgstr ""
msgid "Load a model"
msgstr ""
msgid "Import Zip Archive"
msgstr ""
msgid "Load models contained within a zip archive"
msgstr ""
msgid "Import Configs"
msgstr ""
@ -4212,7 +4418,7 @@ msgstr ""
msgid "Export current plate as G-code"
msgstr ""
msgid "Export &Configs"
msgid "Export Preset Bundle"
msgstr ""
msgid "Export current configuration to files"
@ -4314,9 +4520,6 @@ msgstr ""
msgid "Preferences"
msgstr ""
msgid "View"
msgstr ""
msgid "Help"
msgstr ""
@ -4383,10 +4586,10 @@ msgstr ""
msgid "Export toolpaths as OBJ"
msgstr ""
msgid "Open &Studio"
msgid "Open &Slicer"
msgstr ""
msgid "Open Studio"
msgid "Open Slicer"
msgstr ""
msgid "&Quit"
@ -4550,9 +4753,6 @@ msgstr ""
msgid "Playing..."
msgstr ""
msgid "Loading..."
msgstr ""
msgid "Year"
msgstr ""
@ -4571,9 +4771,6 @@ msgstr ""
msgid "Show all files, recent first."
msgstr ""
msgid "Timelapse"
msgstr ""
msgid "Switch to timelapse files."
msgstr ""
@ -4706,11 +4903,6 @@ msgid ""
"please try again later."
msgstr ""
msgid ""
"Over 4 systems/handy are using remote access, you can close some and try "
"again."
msgstr ""
msgid "File does not exist."
msgstr ""
@ -4769,12 +4961,6 @@ msgstr ""
msgid "Printing Progress"
msgstr ""
msgid "Resume"
msgstr ""
msgid "Stop"
msgstr ""
msgid "0"
msgstr ""
@ -5131,10 +5317,10 @@ msgstr[1] ""
msgid "ERROR"
msgstr ""
msgid "CANCELED"
msgid "COMPLETED"
msgstr ""
msgid "COMPLETED"
msgid "CANCELED"
msgstr ""
msgid "Cancel upload"
@ -5486,6 +5672,9 @@ msgstr ""
msgid "The name may show garbage characters!"
msgstr ""
msgid "Remember my choice."
msgstr ""
#, possible-boost-format
msgid "Failed loading file \"%1%\". An invalid configuration was found."
msgstr ""
@ -5600,9 +5789,6 @@ msgstr ""
msgid "Error during reload"
msgstr ""
msgid "Slicing"
msgstr ""
msgid "There are warnings after slicing models:"
msgstr ""
@ -5669,7 +5855,7 @@ msgid "Project downloaded %d%%"
msgstr ""
msgid ""
"Importing to Bambu Studio failed. Please download the file and manually "
"Importing to Orca Slicer failed. Please download the file and manually "
"import it."
msgstr ""
@ -5685,6 +5871,20 @@ msgstr ""
msgid "Error occurs while loading G-code file"
msgstr ""
#. TRN %1% is archive path
#, possible-boost-format
msgid "Loading of a ZIP archive on path %1% has failed."
msgstr ""
#. TRN: First argument = path to file, second argument = error description
#, possible-boost-format
msgid "Failed to unzip file to %1%: %2%"
msgstr ""
#, possible-boost-format
msgid "Failed to find unzipped file at %1%. Unzipping of file has failed."
msgstr ""
msgid "Drop project file"
msgstr ""
@ -5709,18 +5909,12 @@ msgstr ""
msgid "Can not add models when in preview mode!"
msgstr ""
msgid "Add Models"
msgstr ""
msgid "All objects will be removed, continue?"
msgstr ""
msgid "The current project has unsaved changes, save it before continue?"
msgstr ""
msgid "Remember my choice."
msgstr ""
msgid "Number of copies:"
msgstr ""
@ -5912,6 +6106,11 @@ msgstr ""
msgid "Stealth Mode"
msgstr ""
msgid ""
"This stops the transmission of data to Bambu's cloud services. Users who "
"don't use BBL machines or use LAN mode only can safely turn on this function."
msgstr ""
msgid "Enable network plugin"
msgstr ""
@ -6016,7 +6215,7 @@ msgid ""
"each printer automatically."
msgstr ""
msgid "Multi-device Management(Take effect after restarting Studio)."
msgid "Multi-device Management(Take effect after restarting Orca)."
msgstr ""
msgid ""
@ -6063,6 +6262,42 @@ msgstr ""
msgid "If enabled, sets OrcaSlicer as default application to open .step files"
msgstr ""
msgid "Associate web links to OrcaSlicer"
msgstr ""
msgid "Associate URLs to OrcaSlicer"
msgstr ""
msgid "Current association: "
msgstr ""
msgid "Associate prusaslicer://"
msgstr ""
msgid "Not associated to any application"
msgstr ""
msgid ""
"Associate OrcaSlicer with prusaslicer:// links so that Orca can open models "
"from Printable.com"
msgstr ""
msgid "Associate bambustudio://"
msgstr ""
msgid ""
"Associate OrcaSlicer with bambustudio:// links so that Orca can open models "
"from makerworld.com"
msgstr ""
msgid "Associate cura://"
msgstr ""
msgid ""
"Associate OrcaSlicer with cura:// links so that Orca can open models from "
"thingiverse.com"
msgstr ""
msgid "Maximum recent projects"
msgstr ""
@ -6232,9 +6467,6 @@ msgstr ""
msgid "Create printer"
msgstr ""
msgid "Incompatible"
msgstr ""
msgid "The selected preset is null!"
msgstr ""
@ -6329,15 +6561,6 @@ msgstr ""
msgid "Preset Inside Project"
msgstr ""
msgid "Name is invalid;"
msgstr ""
msgid "illegal characters:"
msgstr ""
msgid "illegal suffix:"
msgstr ""
msgid "Name is unavailable."
msgstr ""
@ -6355,15 +6578,6 @@ msgstr ""
msgid "Please note that saving action will replace this preset"
msgstr ""
msgid "The name is not allowed to be empty."
msgstr ""
msgid "The name is not allowed to start with space character."
msgstr ""
msgid "The name is not allowed to end with space character."
msgstr ""
msgid "The name cannot be the same as a preset alias name."
msgstr ""
@ -6421,9 +6635,6 @@ msgstr ""
msgid "Log out successful."
msgstr ""
msgid "Offline"
msgstr ""
msgid "Busy"
msgstr ""
@ -6448,9 +6659,6 @@ msgstr ""
msgid "Send print job to"
msgstr ""
msgid "Bed Leveling"
msgstr ""
msgid "Flow Dynamics Calibration"
msgstr ""
@ -6580,7 +6788,7 @@ msgid "nozzle in preset: %s %s"
msgstr ""
#, possible-c-format, possible-boost-format
msgid "nozzle memorized: %.1f %s"
msgid "nozzle memorized: %.2f %s"
msgstr ""
msgid ""
@ -6606,15 +6814,6 @@ msgid ""
"Connecting to the printer. Unable to cancel during the connection process."
msgstr ""
msgid "Preparing print job"
msgstr ""
msgid "Abnormal print file data. Please slice again"
msgstr ""
msgid "The name length exceeds the limit."
msgstr ""
msgid ""
"Caution to use! Flow calibration on Textured PEI Plate may fail due to the "
"scattered surface."
@ -6938,6 +7137,9 @@ msgstr ""
msgid "Tree supports"
msgstr ""
msgid "Skirt"
msgstr ""
msgid "Prime tower"
msgstr ""
@ -7781,6 +7983,12 @@ msgstr ""
msgid "Shift+Mouse wheel"
msgstr ""
msgid "Horizontal slider - Move to start position"
msgstr ""
msgid "Horizontal slider - Move to last position"
msgstr ""
msgid "Release Note"
msgstr ""
@ -7897,12 +8105,6 @@ msgstr ""
msgid "Update firmware"
msgstr ""
msgid "Printing"
msgstr ""
msgid "Idle"
msgstr ""
msgid "Beta version"
msgstr ""
@ -7932,7 +8134,7 @@ msgstr ""
msgid ""
"The firmware version is abnormal. Repairing and updating are required before "
"printing. Do you want to update now? You can also update later on printer or "
"update next time starting the studio."
"update next time starting Orca."
msgstr ""
msgid "Extension Board"
@ -8062,9 +8264,6 @@ msgstr ""
msgid "Gap infill"
msgstr ""
msgid "Skirt"
msgstr ""
msgid "Support interface"
msgstr ""
@ -9248,7 +9447,7 @@ msgid ""
"Order of wall/infill. When the tickbox is unchecked the walls are printed "
"first, which works best in most cases.\n"
"\n"
"Printing walls first may help with extreme overhangs as the walls have the "
"Printing infill first may help with extreme overhangs as the walls have the "
"neighbouring infill to adhere to. However, the infill will slighly push out "
"the printed walls where it is attached to them, resulting in a worse "
"external surface finish. It can also cause the infill to shine through the "
@ -9619,7 +9818,7 @@ msgstr ""
msgid "(Undefined)"
msgstr ""
msgid "Infill direction"
msgid "Sparse infill direction"
msgstr ""
msgid ""
@ -9627,6 +9826,20 @@ msgid ""
"of line"
msgstr ""
msgid "Solid infill direction"
msgstr ""
msgid ""
"Angle for solid infill pattern, which controls the start or main direction "
"of line"
msgstr ""
msgid "Rotate solid infill direction"
msgstr ""
msgid "Rotate the solid infill direction by 90° for each layer."
msgstr ""
msgid "Sparse infill density"
msgstr ""
@ -9915,8 +10128,14 @@ msgid "Arc fitting"
msgstr ""
msgid ""
"Enable this to get a G-code file which has G2 and G3 moves. And the fitting "
"tolerance is same with resolution"
"Enable this to get a G-code file which has G2 and G3 moves. The fitting "
"tolerance is same as the resolution. \n"
"\n"
"Note: For klipper machines, this option is recomended to be disabled. "
"Klipper does not benefit from arc commands as these are split again into "
"line segments by the firmware. This results in a reduction in surface "
"quality as line segments are converted to arcs by the slicer and then back "
"to line segments by the firmware."
msgstr ""
msgid "Add line number"
@ -10106,9 +10325,24 @@ msgstr ""
msgid "Infill/Wall overlap"
msgstr ""
#, no-c-format, no-boost-format
msgid ""
"Infill area is enlarged slightly to overlap with wall for better bonding. "
"The percentage value is relative to line width of sparse infill"
"The percentage value is relative to line width of sparse infill. Set this "
"value to ~10-15% to minimize potential over extrusion and accumulation of "
"material resulting in rough top surfaces."
msgstr ""
msgid "Top/Bottom solid infill/wall overlap"
msgstr ""
#, no-c-format, no-boost-format
msgid ""
"Top solid infill area is enlarged slightly to overlap with wall for better "
"bonding and to minimize the appearance of pinholes where the top infill "
"meets the walls. A value of 25-30% is a good starting point, minimising the "
"appearance of pinholes. The percentage value is relative to line width of "
"sparse infill"
msgstr ""
msgid "Speed of internal sparse infill"
@ -10971,6 +11205,29 @@ msgstr ""
msgid "How many layers of skirt. Usually only one layer"
msgstr ""
msgid "Draft shield"
msgstr ""
msgid ""
"A draft shield is useful to protect an ABS or ASA print from warping and "
"detaching from print bed due to wind draft. It is usually needed only with "
"open frame printers, i.e. without an enclosure. \n"
"\n"
"Options:\n"
"Enabled = skirt is as tall as the highest printed object.\n"
"Limited = skirt is as tall as specified by skirt height.\n"
"\n"
"Note: With the draft shield active, the skirt will be printed at skirt "
"distance from the object. Therefore, if brims are active it may intersect "
"with them. To avoid this, increase the skirt distance value.\n"
msgstr ""
msgid "Limited"
msgstr ""
msgid "Enabled"
msgstr ""
msgid "Skirt loops"
msgstr ""
@ -10983,6 +11240,17 @@ msgstr ""
msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed."
msgstr ""
msgid "Skirt minimum extrusion length"
msgstr ""
msgid ""
"Minimum filament extrusion length in mm when printing the skirt. Zero means "
"this feature is disabled.\n"
"\n"
"Using a non zero value is useful if the printer is set up to print without a "
"prime line."
msgstr ""
msgid ""
"The printing speed in exported gcode will be slowed down, when the estimated "
"layer time is shorter than this value, to get better cooling for these layers"
@ -11599,6 +11867,31 @@ msgstr ""
msgid "Spacing of purge lines on the wipe tower."
msgstr ""
msgid "Maximum wipe tower print speed"
msgstr ""
msgid ""
"The maximum print speed when purging in the wipe tower and printing the wipe "
"tower sparse layers. When purging, if the sparse infill speed or calculated "
"speed from the filament max volumetric speed is lower, the lowest will be "
"used instead.\n"
"\n"
"When printing the sparse layers, if the internal perimeter speed or "
"calculated speed from the filament max volumetric speed is lower, the lowest "
"will be used instead.\n"
"\n"
"Increasing this speed may affect the tower's stability as well as increase "
"the force with which the nozzle collides with any blobs that may have formed "
"on the wipe tower.\n"
"\n"
"Before increasing this parameter beyond the default of 90mm/sec, make sure "
"your printer can reliably bridge at the increased speeds and that ooze when "
"tool changing is well controlled.\n"
"\n"
"For the wipe tower external perimeters the internal perimeter speed is used "
"regardless of this setting."
msgstr ""
msgid "Wipe tower extruder"
msgstr ""
@ -13248,7 +13541,7 @@ msgstr ""
msgid ""
"\n"
"\n"
"Studio has detected that your user presets synchronization function is not "
"Orca has detected that your user presets synchronization function is not "
"enabled, which may result in unsuccessful Filament settings on the Device "
"page. \n"
"Click \"Sync user presets\" to enable the synchronization function."
@ -13257,9 +13550,6 @@ msgstr ""
msgid "Printer Setting"
msgstr ""
msgid "Export Configs"
msgstr ""
msgid "Printer config bundle(.orca_printer)"
msgstr ""
@ -13415,6 +13705,10 @@ msgstr ""
msgid "Daily Tips"
msgstr ""
#, possible-c-format, possible-boost-format
msgid "nozzle memorized: %.1f %s"
msgstr ""
msgid ""
"Your nozzle diameter in preset is not consistent with memorized nozzle "
"diameter. Did you change your nozzle lately?"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M.5,13.5V1.5a1,1,0,0,1,1-1h12a1,1,0,0,1,1,1v12a1,1,0,0,1-1,1H1.5A1,1,0,0,1,.5,13.5Zm3-6h3m2,0h3m-4-4v8" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round;opacity:0.6000000000000001"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M.5,13.5V1.5a1,1,0,0,1,1-1h12a1,1,0,0,1,1,1v12a1,1,0,0,1-1,1H1.5A1,1,0,0,1,.5,13.5Zm3-6h3m2,0h3m-4-4v8" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round;opacity:1"/></svg>

Before

Width:  |  Height:  |  Size: 307 B

After

Width:  |  Height:  |  Size: 290 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M.5,13.5V3.5a1,1,0,0,1,1-1h10a1,1,0,0,1,1,1v10a1,1,0,0,1-1,1H1.5A1,1,0,0,1,.5,13.5Zm13-1a1,1,0,0,0,1-1V1.5a1,1,0,0,0-1-1H3.5a1,1,0,0,0-1,1m0,7h3m2,0h3m-4,4v-8" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round;opacity:0.6000000000000001"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M.5,13.5V3.5a1,1,0,0,1,1-1h10a1,1,0,0,1,1,1v10a1,1,0,0,1-1,1H1.5A1,1,0,0,1,.5,13.5Zm13-1a1,1,0,0,0,1-1V1.5a1,1,0,0,0-1-1H3.5a1,1,0,0,0-1,1m0,7h3m2,0h3m-4,4v-8" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round;opacity:1"/></svg>

Before

Width:  |  Height:  |  Size: 363 B

After

Width:  |  Height:  |  Size: 346 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="1" y="1" width="15" height="15" rx="1.5" style="fill:#009688"/><line x1="3.5" y1="8.5" x2="13.5" y2="8.5" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="0" y="1" width="15" height="15" rx="1.5" style="fill:#009688"/><line x1="2.5" y1="8.5" x2="12.5" y2="8.5" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 278 B

After

Width:  |  Height:  |  Size: 278 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="1" y="1" width="15" height="15" rx="1.5" style="fill:#b3b3b3;opacity:0.3"/><line x1="3.5" y1="8.5" x2="13.5" y2="8.5" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round;opacity:0.5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="0.5" y="1.5" width="14" height="14" rx="1.5" style="stroke:#DBDBDB;fill:#F0F0F1;opacity:1"/><line x1="2.5" y1="8.5" x2="12.5" y2="8.5" style="fill:none;stroke:#262E30;stroke-linecap:round;stroke-linejoin:round;opacity:0.5"/></svg>

Before

Width:  |  Height:  |  Size: 302 B

After

Width:  |  Height:  |  Size: 322 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="1" y="1" width="15" height="15" rx="1.5" style="fill:#4db6ac"/><line x1="3.5" y1="8.5" x2="13.5" y2="8.5" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="0" y="1" width="15" height="15" rx="1.5" style="fill:#4db6ac"/><line x1="2.5" y1="8.5" x2="12.5" y2="8.5" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 278 B

After

Width:  |  Height:  |  Size: 278 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="1.5" y="1.5" width="14" height="14" rx="1" style="fill:none;stroke:#949494;stroke-miterlimit:10;opacity:0.3"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="0.5" y="1.5" width="14" height="14" rx="1" style="fill:none;stroke:#DBDBDB;stroke-miterlimit:10;opacity:1"/></svg>

Before

Width:  |  Height:  |  Size: 208 B

After

Width:  |  Height:  |  Size: 206 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="1" y="1" width="15" height="15" rx="1.5" style="fill:#b3b3b3;opacity:0.3"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="0.5" y="1.5" width="14" height="14" rx="1" style="fill:#F0F0F1;stroke:#DBDBDB;stroke-miterlimit:10;opacity:1"/></svg>

Before

Width:  |  Height:  |  Size: 173 B

After

Width:  |  Height:  |  Size: 209 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="1.5" y="1.5" width="14" height="14" rx="1" style="fill:none;stroke:#009688;stroke-linecap:round;stroke-linejoin:round;opacity:0.5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="0.5" y="1.5" width="14" height="14" rx="1" style="fill:none;stroke:#009688;stroke-linecap:round;stroke-linejoin:round;opacity:0.5"/></svg>

Before

Width:  |  Height:  |  Size: 230 B

After

Width:  |  Height:  |  Size: 230 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="1" y="1" width="15" height="15" rx="1.5" style="fill:#009688"/><polyline points="13.5 6.5 6.5 11.5 3.5 7.5" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="0" y="1" width="15" height="15" rx="1.5" style="fill:#009688"/><polyline points="12.5 6.5 5.5 11.5 2.5 7.5" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 280 B

After

Width:  |  Height:  |  Size: 280 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="1" y="1" width="15" height="15" rx="1.5" style="fill:#b3b3b3;opacity:0.3"/><polyline points="13.5 6.5 6.5 11.5 3.5 7.5" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round;opacity:0.5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="0.5" y="1.5" width="14" height="14" rx="1" style="stroke:#DBDBDB;fill:#F0F0F1;opacity:1"/><polyline points="12.5 6.5 5.5 11.5 2.5 7.5" style="fill:none;stroke:#262E30;stroke-linecap:round;stroke-linejoin:round;opacity:0.5"/></svg>

Before

Width:  |  Height:  |  Size: 304 B

After

Width:  |  Height:  |  Size: 322 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="1" y="1" width="15" height="15" rx="1.5" style="fill:#4db6ac"/><polyline points="13.5 6.5 6.5 11.5 3.5 7.5" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><rect x="0" y="1" width="15" height="15" rx="1.5" style="fill:#4db6ac"/><polyline points="12.5 6.5 5.5 11.5 2.5 7.5" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 280 B

After

Width:  |  Height:  |  Size: 280 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><polyline points="13.5 6.5 6.5 11.5 3.5 7.5" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><polyline points="14.5 6.5 7.5 11.5 4.5 7.5" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 208 B

After

Width:  |  Height:  |  Size: 212 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M.5,13.5V1.5a1,1,0,0,1,1-1h12a1,1,0,0,1,1,1v12a1,1,0,0,1-1,1H1.5A1,1,0,0,1,.5,13.5Zm3-6h8" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round;opacity:0.6000000000000001"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M.5,13.5V1.5a1,1,0,0,1,1-1h12a1,1,0,0,1,1,1v12a1,1,0,0,1-1,1H1.5A1,1,0,0,1,.5,13.5Zm3-6h8" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round;opacity:1"/></svg>

Before

Width:  |  Height:  |  Size: 294 B

After

Width:  |  Height:  |  Size: 277 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><line x1="2.5" y1="3.5" x2="2.5" y2="12.5" style="fill:none;stroke:#009688;stroke-linecap:round;stroke-linejoin:round"/><line x1="4.5" y1="3.5" x2="4.5" y2="12.5" style="fill:none;stroke:#009688;stroke-linecap:round;stroke-linejoin:round"/><line x1="6.5" y1="3.5" x2="6.5" y2="12.5" style="fill:none;stroke:#009688;stroke-linecap:round;stroke-linejoin:round"/><rect x="0.5" y="3.5" width="8" height="9" style="fill:none;stroke:#009688;stroke-linecap:round;stroke-linejoin:round"/><path d="M13.5.5H1.5a1,1,0,0,0-1,1v2h10a1,1,0,0,1,1,1v8h2a1,1,0,0,0,1-1V1.5A1,1,0,0,0,13.5.5Z" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/><line x1="0.5" y1="14.5" x2="14.5" y2="14.5" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><line x1="2.5" y1="3.5" x2="2.5" y2="12.5" style="fill:none;stroke:#009688;stroke-linecap:round;stroke-linejoin:round"/><line x1="4.5" y1="3.5" x2="4.5" y2="12.5" style="fill:none;stroke:#009688;stroke-linecap:round;stroke-linejoin:round"/><rect x="0.5" y="3.5" width="6" height="9" style="fill:none;stroke:#009688;stroke-linecap:round;stroke-linejoin:round"/><path d="M13.5.5H1.5a1,1,0,0,0-1,1v2h10a1,1,0,0,1,1,1v8h2a1,1,0,0,0,1-1V1.5A1,1,0,0,0,13.5.5Z" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/><line x1="0.5" y1="14.5" x2="14.5" y2="14.5" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 864 B

After

Width:  |  Height:  |  Size: 744 B

Before After
Before After

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><circle cx="8" cy="8" r="6.5" style="fill:none;stroke:#54545a;stroke-linecap:round;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 196 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><circle cx="8" cy="8" r="6.5" style="fill:none;stroke:#cfcfcf;stroke-linecap:round;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 196 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><polygon points="4.25 14.5 11.75 14.5 15.5 8 11.75 1.5 4.25 1.5 0.5 8 4.25 14.5" style="fill:none;stroke:#54545a;stroke-linecap:round;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 247 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><polygon points="4.25 14.5 11.75 14.5 15.5 8 11.75 1.5 4.25 1.5 0.5 8 4.25 14.5" style="fill:none;stroke:#cfcfcf;stroke-linecap:round;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 247 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><rect x="1.5" y="1.5" width="13" height="13" style="fill:none;stroke:#54545a;stroke-linecap:round;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 211 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><rect x="1.5" y="1.5" width="13" height="13" style="fill:none;stroke:#cfcfcf;stroke-linecap:round;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 211 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><polygon points="8 1.5 0.5 14.5 15.5 14.5 8 1.5" style="fill:none;stroke:#54545a;stroke-linecap:round;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 215 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><polygon points="8 1.5 0.5 14.5 15.5 14.5 8 1.5" style="fill:none;stroke:#cfcfcf;stroke-linecap:round;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 215 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M.5,13.5V1.5a1,1,0,0,1,1-1h12a1,1,0,0,1,1,1v12a1,1,0,0,1-1,1H1.5A1,1,0,0,1,.5,13.5Zm3-6h8" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round;opacity:0.6000000000000001"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M.5,13.5V1.5a1,1,0,0,1,1-1h12a1,1,0,0,1,1,1v12a1,1,0,0,1-1,1H1.5A1,1,0,0,1,.5,13.5Zm3-6h8" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round;opacity:1"/></svg>

Before

Width:  |  Height:  |  Size: 294 B

After

Width:  |  Height:  |  Size: 277 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><polyline points="17.5 10.5 12.5 13.5 7.5 10.5" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><polyline points="11.5 6.5 6.5 9.5 1.5 6.5" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 214 B

After

Width:  |  Height:  |  Size: 210 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M14.5,6.5v7a1,1,0,0,1-1,1H1.5a1,1,0,0,1-1-1V1.5a1,1,0,0,1,1-1h7m-5,9v2h2l8.586-8.586a1.414,1.414,0,0,0-2-2Z" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round;opacity:0.6000000000000001"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M14.5,6.5v7a1,1,0,0,1-1,1H1.5a1,1,0,0,1-1-1V1.5a1,1,0,0,1,1-1h7m-5,9v2h2l8.586-8.586a1.414,1.414,0,0,0-2-2Z" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round;opacity:1"/></svg>

Before

Width:  |  Height:  |  Size: 312 B

After

Width:  |  Height:  |  Size: 295 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M14.5,6.5v7a1,1,0,0,1-1,1H1.5a1,1,0,0,1-1-1V1.5a1,1,0,0,1,1-1h7m-5,9v2h2l8.586-8.586a1.414,1.414,0,0,0-2-2Z" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round;opacity:0.6000000000000001"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M14.5,6.5v7a1,1,0,0,1-1,1H1.5a1,1,0,0,1-1-1V1.5a1,1,0,0,1,1-1h7m-5,9v2h2l8.586-8.586a1.414,1.414,0,0,0-2-2Z" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round;opacity:1"/></svg>

Before

Width:  |  Height:  |  Size: 312 B

After

Width:  |  Height:  |  Size: 295 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M11.5.5H.5v11a11,11,0,0,0,11-11" style="fill:#009688"/><path d="M10.5,15.5h5v-5a5,5,0,0,0-5,5" style="fill:#009688"/><path d="M.5,11.5a11,11,0,0,0,11-11" style="fill:none;stroke:#54545a;stroke-miterlimit:10"/><path d="M15.5,10.5a5,5,0,0,0-5,5" style="fill:none;stroke:#54545a;stroke-miterlimit:10"/><rect x="0.5" y="0.5" width="15" height="15" transform="translate(16 16) rotate(180)" style="fill:none;stroke:#54545a;stroke-linecap:square;stroke-linejoin:round"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><polyline points="15 11 7 15 3 9 14 9 15 11" style="fill:#009688"/><polygon points="1.5 5.5 10.5 0.5 15.5 10.5 6.5 15.5 1.5 5.5" style="fill:none;stroke:#54545a;stroke-linecap:square;stroke-linejoin:round"/><line x1="8.5" y1="6.5" x2="13.5" y2="0.5" style="fill:none;stroke:#54545a;stroke-linecap:round;stroke-linejoin:round"/><path d="M1.5,11S3,13,3,14c0,2-.948,2-1.5,2S0,16,0,14C0,13,1.5,11,1.5,11Z" style="fill:#009688"/></svg>

Before

Width:  |  Height:  |  Size: 561 B

After

Width:  |  Height:  |  Size: 513 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M10.5,15.5h5v-5a5,5,0,0,0-5,5" style="fill:#009688"/><path d="M11.5.5H.5v11a11,11,0,0,0,11-11" style="fill:#009688"/><path d="M15.5,10.5a5,5,0,0,0-5,5" style="fill:none;stroke:#cfcfcf;stroke-linecap:square;stroke-linejoin:round"/><path d="M.5,11.5a11,11,0,0,0,11-11" style="fill:none;stroke:#cfcfcf;stroke-linecap:square;stroke-linejoin:round"/><rect x="0.5" y="0.5" width="15" height="15" transform="translate(16 16) rotate(180)" style="fill:none;stroke:#cfcfcf;stroke-linecap:square;stroke-linejoin:round"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><polyline points="15 11 7 15 3 9 14 9 15 11" style="fill:#009688"/><polygon points="1.5 5.5 10.5 0.5 15.5 10.5 6.5 15.5 1.5 5.5" style="fill:none;stroke:#cfcfcf;stroke-linecap:square;stroke-linejoin:round"/><line x1="8.5" y1="6.5" x2="13.5" y2="0.5" style="fill:none;stroke:#cfcfcf;stroke-linecap:round;stroke-linejoin:round"/><path d="M1.5,11S3,13,3,14c0,2-.948,2-1.5,2S0,16,0,14C0,13,1.5,11,1.5,11Z" style="fill:#009688"/></svg>

Before

Width:  |  Height:  |  Size: 607 B

After

Width:  |  Height:  |  Size: 513 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><line x1="0.5" y1="3.5" x2="4.5" y2="3.5" style="fill:none;stroke:#54545a;stroke-linecap:square;stroke-linejoin:round"/><line x1="11.5" y1="3.5" x2="15.5" y2="3.5" style="fill:none;stroke:#54545a;stroke-linecap:square;stroke-linejoin:round"/><line x1="6.5" y1="3.5" x2="9.5" y2="3.5" style="fill:none;stroke:#009689;stroke-linecap:square;stroke-linejoin:round"/><line x1="0.5" y1="9.5" x2="2.5" y2="9.5" style="fill:none;stroke:#54545a;stroke-linecap:square;stroke-linejoin:round"/><line x1="8.5" y1="9.5" x2="15.5" y2="9.5" style="fill:none;stroke:#54545a;stroke-linecap:square;stroke-linejoin:round"/><line x1="4.5" y1="9.5" x2="6.5" y2="9.5" style="fill:none;stroke:#009689;stroke-linecap:square;stroke-linejoin:round"/><line x1="0.5" y1="12.5" x2="8.5" y2="12.5" style="fill:none;stroke:#54545a;stroke-linecap:square;stroke-linejoin:round"/><line x1="14.5" y1="12.5" x2="15.5" y2="12.5" style="fill:none;stroke:#54545a;stroke-linecap:square;stroke-linejoin:round"/><line x1="10.5" y1="12.5" x2="12.5" y2="12.5" style="fill:none;stroke:#009689;stroke-linecap:square;stroke-linejoin:round"/><line x1="0.5" y1="6.5" x2="15.5" y2="6.5" style="fill:none;stroke:#54545a;stroke-linecap:square;stroke-linejoin:round"/><line x1="0.5" y1="0.5" x2="15.5" y2="0.5" style="fill:none;stroke:#54545a;stroke-linecap:square;stroke-linejoin:round"/><line x1="0.5" y1="15.5" x2="15.5" y2="15.5" style="fill:none;stroke:#54545a;stroke-linecap:square;stroke-linejoin:round"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><polygon points="8 0 0 0 0 6 8 0" style="fill:#009688"/><polygon points="16 7 10 0 7 6 16 7" style="fill:#009688"/><polygon points="2 8 13 11 5 16 2 8" style="fill:#009688"/><rect x="0.5" y="0.5" width="15" height="15" transform="translate(16 16) rotate(180)" style="fill:none;stroke:#54545a;stroke-linecap:square;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 427 B

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><line x1="0.5" y1="3.5" x2="4.5" y2="3.5" style="fill:none;stroke:#cfcfcf;stroke-linecap:square;stroke-linejoin:round"/><line x1="11.5" y1="3.5" x2="15.5" y2="3.5" style="fill:none;stroke:#cfcfcf;stroke-linecap:square;stroke-linejoin:round"/><line x1="6.5" y1="3.5" x2="9.5" y2="3.5" style="fill:none;stroke:#009688;stroke-linecap:square;stroke-linejoin:round"/><line x1="0.5" y1="9.5" x2="2.5" y2="9.5" style="fill:none;stroke:#cfcfcf;stroke-linecap:square;stroke-linejoin:round"/><line x1="8.5" y1="9.5" x2="15.5" y2="9.5" style="fill:none;stroke:#cfcfcf;stroke-linecap:square;stroke-linejoin:round"/><line x1="4.5" y1="9.5" x2="6.5" y2="9.5" style="fill:none;stroke:#009688;stroke-linecap:square;stroke-linejoin:round"/><line x1="0.5" y1="12.5" x2="8.5" y2="12.5" style="fill:none;stroke:#cfcfcf;stroke-linecap:square;stroke-linejoin:round"/><line x1="14.5" y1="12.5" x2="15.5" y2="12.5" style="fill:none;stroke:#cfcfcf;stroke-linecap:square;stroke-linejoin:round"/><line x1="10.5" y1="12.5" x2="12.5" y2="12.5" style="fill:none;stroke:#009688;stroke-linecap:square;stroke-linejoin:round"/><line x1="0.5" y1="6.5" x2="15.5" y2="6.5" style="fill:none;stroke:#cfcfcf;stroke-linecap:square;stroke-linejoin:round"/><line x1="0.5" y1="0.5" x2="15.5" y2="0.5" style="fill:none;stroke:#cfcfcf;stroke-linecap:square;stroke-linejoin:round"/><line x1="0.5" y1="15.5" x2="15.5" y2="15.5" style="fill:none;stroke:#cfcfcf;stroke-linecap:square;stroke-linejoin:round"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><polygon points="8 0 0 0 0 6 8 0" style="fill:#009688"/><polygon points="16 7 10 0 7 6 16 7" style="fill:#009688"/><polygon points="2 8 13 11 5 16 2 8" style="fill:#009688"/><rect x="0.5" y="0.5" width="15" height="15" transform="translate(16 16) rotate(180)" style="fill:none;stroke:#cfcfcf;stroke-linecap:square;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 427 B

Before After
Before After

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><line x1="4.5" y1="3.5" x2="10.5" y2="12.5" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/><line x1="10.5" y1="3.5" x2="4.5" y2="12.5" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/></svg>

After

Width:  |  Height:  |  Size: 331 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><line x1="4.5" y1="3.5" x2="7.5" y2="8.5" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/><line x1="10.5" y1="3.5" x2="7.5" y2="8.5" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/><line x1="7.5" y1="8.5" x2="7.5" y2="12.5" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/></svg>

After

Width:  |  Height:  |  Size: 448 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 15 15"><path d="M14.5,6.5v7a1,1,0,0,1-1,1H1.5a1,1,0,0,1-1-1V1.5a1,1,0,0,1,1-1h7m-5,9v2h2l8.586-8.586a1.414,1.414,0,0,0-2-2Z" style="fill:none;stroke:#000;stroke-linecap:square;stroke-linejoin:round;opacity:0.6000000000000001"/></svg>

Before

Width:  |  Height:  |  Size: 309 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M12,1a3,3,0,0,1,3,3v8a3,3,0,0,1-3,3H4a3,3,0,0,1-3-3V4A3,3,0,0,1,4,1h8m0-1H4A4,4,0,0,0,0,4v8a4,4,0,0,0,4,4h8a4,4,0,0,0,4-4V4a4,4,0,0,0-4-4Z" style="fill:#949494"/><line x1="5.5" y1="11.5" x2="5.5" y2="5.5" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-miterlimit:10"/><line x1="6.5" y1="4.5" x2="9.5" y2="4.5" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-miterlimit:10"/><line x1="6.5" y1="8.5" x2="9.5" y2="8.5" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-miterlimit:10"/><line x1="10.5" y1="5.5" x2="10.5" y2="11.5" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-miterlimit:10"/></svg>

Before

Width:  |  Height:  |  Size: 740 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M12,1a3,3,0,0,1,3,3v8a3,3,0,0,1-3,3H4a3,3,0,0,1-3-3V4A3,3,0,0,1,4,1h8m0-1H4A4,4,0,0,0,0,4v8a4,4,0,0,0,4,4h8a4,4,0,0,0,4-4V4a4,4,0,0,0-4-4Z" style="fill:#949494"/><line x1="5.5" y1="11.5" x2="5.5" y2="5.5" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-miterlimit:10"/><line x1="5.5" y1="4.5" x2="8.5" y2="4.5" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-miterlimit:10"/><line x1="5.5" y1="7.5" x2="9.5" y2="7.5" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-miterlimit:10"/><line x1="6.5" y1="11.5" x2="9.5" y2="11.5" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-miterlimit:10"/><line x1="9.5" y1="5.5" x2="9.5" y2="6.5" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-miterlimit:10"/><line x1="10.5" y1="8.5" x2="10.5" y2="10.5" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-miterlimit:10"/></svg>

Before

Width:  |  Height:  |  Size: 980 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M15,5V15H5V5H15m0-1H5A1,1,0,0,0,4,5V15a1,1,0,0,0,1,1H15a1,1,0,0,0,1-1V5a1,1,0,0,0-1-1Z" style="fill:#54545a"/><path d="M11,1V4H6A2,2,0,0,0,4,6v5H1V1H11m0-1H1A1,1,0,0,0,0,1V11a1,1,0,0,0,1,1H5V6A1,1,0,0,1,6,5h6V1a1,1,0,0,0-1-1Z" style="fill:#54545a"/><g style="opacity:0.4"><path d="M11,1H1V11H4V5A1,1,0,0,1,5,4h6Z" style="fill:#54545a"/></g></svg>

Before

Width:  |  Height:  |  Size: 438 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M15,5V15H5V5H15m0-1H5A1,1,0,0,0,4,5V15a1,1,0,0,0,1,1H15a1,1,0,0,0,1-1V5a1,1,0,0,0-1-1Z" style="fill:#cfcfcf"/><path d="M11,1V4H6A2,2,0,0,0,4,6v5H1V1H11m0-1H1A1,1,0,0,0,0,1V11a1,1,0,0,0,1,1H5V6A1,1,0,0,1,6,5h6V1a1,1,0,0,0-1-1Z" style="fill:#cfcfcf"/><g style="opacity:0.4"><path d="M11,1H1V11H4V5A1,1,0,0,1,5,4h6Z" style="fill:#cfcfcf"/></g></svg>

Before

Width:  |  Height:  |  Size: 438 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M11,1V11H1V1H11m0-1H1A1,1,0,0,0,0,1V11a1,1,0,0,0,1,1H11a1,1,0,0,0,1-1V1a1,1,0,0,0-1-1Z" style="fill:#54545a"/><path d="M15,5V15H5V5H15m0-1H5A1,1,0,0,0,4,5V15a1,1,0,0,0,1,1H15a1,1,0,0,0,1-1V5a1,1,0,0,0-1-1Z" style="fill:#54545a"/><g style="opacity:0.4"><rect x="5" y="5" width="6" height="6" style="fill:#54545a"/></g></svg>

Before

Width:  |  Height:  |  Size: 415 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M11,1V11H1V1H11m0-1H1A1,1,0,0,0,0,1V11a1,1,0,0,0,1,1H11a1,1,0,0,0,1-1V1a1,1,0,0,0-1-1Z" style="fill:#cfcfcf"/><path d="M15,5V15H5V5H15m0-1H5A1,1,0,0,0,4,5V15a1,1,0,0,0,1,1H15a1,1,0,0,0,1-1V5a1,1,0,0,0-1-1Z" style="fill:#cfcfcf"/><g style="opacity:0.4"><rect x="5" y="5" width="6" height="6" style="fill:#cfcfcf"/></g></svg>

Before

Width:  |  Height:  |  Size: 415 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><g style="opacity:0.4"><path d="M15,5V15H5V5H15m0-1H5A1,1,0,0,0,4,5V15a1,1,0,0,0,1,1H15a1,1,0,0,0,1-1V5a1,1,0,0,0-1-1Z" style="fill:#949494"/></g><path d="M5,4A1,1,0,0,0,4,5v7H1a1,1,0,0,1-1-1V1A1,1,0,0,1,1,0H11a1,1,0,0,1,1,1V4Z" style="fill:#949494"/></svg>

Before

Width:  |  Height:  |  Size: 340 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M15,5V15H5V5H15m0-1H5A1,1,0,0,0,4,5V15a1,1,0,0,0,1,1H15a1,1,0,0,0,1-1V5a1,1,0,0,0-1-1Z" style="fill:#949494"/><g style="opacity:0.4"><path d="M5,4A1,1,0,0,0,4,5v7H1a1,1,0,0,1-1-1V1A1,1,0,0,1,1,0H11a1,1,0,0,1,1,1V4Z" style="fill:#949494"/></g><line x1="7.5" y1="7.5" x2="12.5" y2="12.5" style="fill:none;stroke:#949494;stroke-miterlimit:10"/><line x1="12.5" y1="7.5" x2="7.5" y2="12.5" style="fill:none;stroke:#949494;stroke-miterlimit:10"/></svg>

Before

Width:  |  Height:  |  Size: 538 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><g style="opacity:0.4"><polygon points="11 5 11 1 1 1 1 11 5 11 5 15 15 15 15 5 11 5" style="fill:#54545a"/></g><path d="M11,1V5h4V15H5V11H1V1H11m0-1H1A1,1,0,0,0,0,1V11a1,1,0,0,0,1,1H4v3a1,1,0,0,0,1,1H15a1,1,0,0,0,1-1V5a1,1,0,0,0-1-1H12V1a1,1,0,0,0-1-1Z" style="fill:#54545a"/></svg>

Before

Width:  |  Height:  |  Size: 366 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><g style="opacity:0.4"><polygon points="11 5 11 1 1 1 1 11 5 11 5 15 15 15 15 5 11 5" style="fill:#cfcfcf"/></g><path d="M11,1V5h4V15H5V11H1V1H11m0-1H1A1,1,0,0,0,0,1V11a1,1,0,0,0,1,1H4v3a1,1,0,0,0,1,1H15a1,1,0,0,0,1-1V5a1,1,0,0,0-1-1H12V1a1,1,0,0,0-1-1Z" style="fill:#cfcfcf"/></svg>

Before

Width:  |  Height:  |  Size: 366 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"><rect x="19" y="20" width="1" height="1" style="fill:#009688"/><rect x="19" y="22" width="1" height="1" style="fill:#009688"/><rect x="19" y="24" width="1" height="1" style="fill:#009688"/><rect x="19" y="26" width="1" height="1" style="fill:#009688"/><rect x="19" y="18" width="1" height="1" style="fill:#009688"/><rect x="30" y="21" width="2" height="3" rx="0.5" style="fill:#009688"/><path d="M27.5,27a.5.5,0,0,1-.354-.854l3-3a.5.5,0,0,1,.708.708l-3,3A.5.5,0,0,1,27.5,27Z" style="fill:#009688"/><path d="M34.5,27a.5.5,0,0,1-.354-.146l-3-3a.5.5,0,0,1,.708-.708l3,3A.5.5,0,0,1,34.5,27Z" style="fill:#009688"/><path d="M33.5,35h-5A1.5,1.5,0,0,1,27,33.5v-7a.5.5,0,0,1,1,0v7a.5.5,0,0,0,.5.5h5a.5.5,0,0,0,.5-.5v-7a.5.5,0,0,1,1,0v7A1.5,1.5,0,0,1,33.5,35Z" style="fill:#009688"/><path d="M34.5,27h-7a.5.5,0,0,1,0-1h7a.5.5,0,0,1,0,1Z" style="fill:#009688"/><rect x="27" y="22" width="1" height="1" style="fill:#009688"/><rect x="25" y="21" width="1" height="1" style="fill:#009688"/><rect x="25" y="23" width="1" height="1" style="fill:#009688"/><rect x="23" y="22" width="1" height="1" style="fill:#009688"/><rect x="23" y="24" width="1" height="1" style="fill:#009688"/><rect x="23" y="20" width="1" height="1" style="fill:#009688"/><rect x="21" y="21" width="1" height="1" style="fill:#009688"/><rect x="21" y="23" width="1" height="1" style="fill:#009688"/><rect x="21" y="25" width="1" height="1" style="fill:#009688"/><rect x="21" y="19" width="1" height="1" style="fill:#009688"/><path d="M34.5,19a.5.5,0,0,1-.5-.5v-6a.5.5,0,0,1,1,0v6A.5.5,0,0,1,34.5,19Z" style="fill:#009688"/><path d="M34.5,13a.5.5,0,0,1-.5-.5v-7a.5.5,0,0,0-.5-.5H5.5a.5.5,0,0,0-.5.5v7a.5.5,0,0,1-1,0v-7A1.5,1.5,0,0,1,5.5,4h28A1.5,1.5,0,0,1,35,5.5v7A.5.5,0,0,1,34.5,13Z" style="fill:#2b3436"/><path d="M23.5,35H5.5A1.5,1.5,0,0,1,4,33.5v-21a.5.5,0,0,1,1,0v21a.5.5,0,0,0,.5.5h18a.5.5,0,0,1,0,1Z" style="fill:#009688"/><path d="M13.5,31A1.5,1.5,0,1,1,15,29.5,1.5,1.5,0,0,1,13.5,31Zm0-2a.5.5,0,1,0,.5.5A.5.5,0,0,0,13.5,29Z" style="fill:#009688"/><path d="M10.5,24A2.5,2.5,0,1,1,13,21.5,2.5,2.5,0,0,1,10.5,24Zm0-4A1.5,1.5,0,1,0,12,21.5,1.5,1.5,0,0,0,10.5,20Z" style="fill:#009688"/><path d="M28.919,15c-2.773,0-5.51-1.29-7.667-2.521C17.885,10.559,11.266,8,4.783,12.458l-.412.283-.566-.824.412-.283c7.192-4.943,14.656-1.66,17.531-.023,3.739,2.134,8.525,4.071,12.393.087l.348-.359.718.7-.348.359A8,8,0,0,1,28.919,15Z" style="fill:#009688"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"><rect x="31" y="23" width="2" height="2" rx="0.5" style="fill:#009688"/><path d="M29.5,27a.5.5,0,0,1-.354-.854l2-2a.5.5,0,0,1,.708.708l-2,2A.5.5,0,0,1,29.5,27Z" style="fill:#009688"/><path d="M34.5,27a.5.5,0,0,1-.354-.146l-2-2a.5.5,0,0,1,.708-.708l2,2A.5.5,0,0,1,34.5,27Z" style="fill:#009688"/><path d="M33.5,35h-3A1.5,1.5,0,0,1,29,33.5v-7a.5.5,0,0,1,1,0v7a.5.5,0,0,0,.5.5h3a.5.5,0,0,0,.5-.5v-7a.5.5,0,0,1,1,0v7A1.5,1.5,0,0,1,33.5,35Z" style="fill:#009688"/><path d="M34.5,27h-5a.5.5,0,0,1,0-1h5a.5.5,0,0,1,0,1Z" style="fill:#009688"/><rect x="28" y="23" width="1" height="1" style="fill:#009688"/><rect x="26" y="22" width="1" height="1" style="fill:#009688"/><rect x="26" y="24" width="1" height="1" style="fill:#009688"/><rect x="24" y="23" width="1" height="1" style="fill:#009688"/><rect x="24" y="25" width="1" height="1" style="fill:#009688"/><rect x="24" y="21" width="1" height="1" style="fill:#009688"/><rect x="22" y="22" width="1" height="1" style="fill:#009688"/><rect x="22" y="24" width="1" height="1" style="fill:#009688"/><rect x="22" y="26" width="1" height="1" style="fill:#009688"/><rect x="22" y="20" width="1" height="1" style="fill:#009688"/><path d="M34.5,22a.5.5,0,0,1-.5-.5v-9a.5.5,0,0,1,1,0v9A.5.5,0,0,1,34.5,22Z" style="fill:#009688"/><path d="M34.5,13a.5.5,0,0,1-.5-.5v-7a.5.5,0,0,0-.5-.5H5.5a.5.5,0,0,0-.5.5v6a.5.5,0,0,1-1,0v-6A1.5,1.5,0,0,1,5.5,4h28A1.5,1.5,0,0,1,35,5.5v7A.5.5,0,0,1,34.5,13Z" style="fill:#2b3436"/><path d="M26.5,35H5.5A1.5,1.5,0,0,1,4,33.5v-22a.5.5,0,0,1,1,0v22a.5.5,0,0,0,.5.5h21a.5.5,0,0,1,0,1Z" style="fill:#009688"/><path d="M12.5,31A1.5,1.5,0,1,1,14,29.5,1.5,1.5,0,0,1,12.5,31Zm0-2a.5.5,0,1,0,.5.5A.5.5,0,0,0,12.5,29Z" style="fill:#009688"/><path d="M10.5,26A2.5,2.5,0,1,1,13,23.5,2.5,2.5,0,0,1,10.5,26Zm0-4A1.5,1.5,0,1,0,12,23.5,1.5,1.5,0,0,0,10.5,22Z" style="fill:#009688"/><path d="M28.919,15c-2.773,0-5.51-1.29-7.667-2.521C17.885,10.56,11.269,8,4.783,12.458a.5.5,0,1,1-.566-.824c7.194-4.944,14.656-1.662,17.531-.022,3.739,2.133,8.524,4.07,12.394.086a.5.5,0,1,1,.716.7A8,8,0,0,1,28.919,15Z" style="fill:#009688"/></svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"><rect x="19" y="20" width="1" height="1" style="fill:#009688"/><rect x="19" y="22" width="1" height="1" style="fill:#009688"/><rect x="19" y="24" width="1" height="1" style="fill:#009688"/><rect x="19" y="26" width="1" height="1" style="fill:#009688"/><rect x="19" y="18" width="1" height="1" style="fill:#009688"/><rect x="30" y="21" width="2" height="3" rx="0.5" style="fill:#009688"/><path d="M27.5,27a.5.5,0,0,1-.354-.854l3-3a.5.5,0,0,1,.708.708l-3,3A.5.5,0,0,1,27.5,27Z" style="fill:#009688"/><path d="M34.5,27a.5.5,0,0,1-.354-.146l-3-3a.5.5,0,0,1,.708-.708l3,3A.5.5,0,0,1,34.5,27Z" style="fill:#009688"/><path d="M33.5,35h-5A1.5,1.5,0,0,1,27,33.5v-7a.5.5,0,0,1,1,0v7a.5.5,0,0,0,.5.5h5a.5.5,0,0,0,.5-.5v-7a.5.5,0,0,1,1,0v7A1.5,1.5,0,0,1,33.5,35Z" style="fill:#009688"/><path d="M34.5,27h-7a.5.5,0,0,1,0-1h7a.5.5,0,0,1,0,1Z" style="fill:#009688"/><rect x="27" y="22" width="1" height="1" style="fill:#009688"/><rect x="25" y="21" width="1" height="1" style="fill:#009688"/><rect x="25" y="23" width="1" height="1" style="fill:#009688"/><rect x="23" y="22" width="1" height="1" style="fill:#009688"/><rect x="23" y="24" width="1" height="1" style="fill:#009688"/><rect x="23" y="20" width="1" height="1" style="fill:#009688"/><rect x="21" y="21" width="1" height="1" style="fill:#009688"/><rect x="21" y="23" width="1" height="1" style="fill:#009688"/><rect x="21" y="25" width="1" height="1" style="fill:#009688"/><rect x="21" y="19" width="1" height="1" style="fill:#009688"/><path d="M34.5,19a.5.5,0,0,1-.5-.5v-6a.5.5,0,0,1,1,0v6A.5.5,0,0,1,34.5,19Z" style="fill:#009688"/><path d="M34.5,13a.5.5,0,0,1-.5-.5v-7a.5.5,0,0,0-.5-.5H5.5a.5.5,0,0,0-.5.5v7a.5.5,0,0,1-1,0v-7A1.5,1.5,0,0,1,5.5,4h28A1.5,1.5,0,0,1,35,5.5v7A.5.5,0,0,1,34.5,13Z" style="fill:#b6b6b6"/><path d="M23.5,35H5.5A1.5,1.5,0,0,1,4,33.5v-21a.5.5,0,0,1,1,0v21a.5.5,0,0,0,.5.5h18a.5.5,0,0,1,0,1Z" style="fill:#009688"/><path d="M13.5,31A1.5,1.5,0,1,1,15,29.5,1.5,1.5,0,0,1,13.5,31Zm0-2a.5.5,0,1,0,.5.5A.5.5,0,0,0,13.5,29Z" style="fill:#009688"/><path d="M10.5,24A2.5,2.5,0,1,1,13,21.5,2.5,2.5,0,0,1,10.5,24Zm0-4A1.5,1.5,0,1,0,12,21.5,1.5,1.5,0,0,0,10.5,20Z" style="fill:#009688"/><path d="M28.919,15c-2.773,0-5.51-1.29-7.667-2.521C17.885,10.56,11.269,8,4.783,12.458l-.412.284-.566-.825.412-.283c7.194-4.944,14.656-1.662,17.531-.022,3.739,2.133,8.524,4.07,12.394.086l.347-.359.718.7-.349.359A8,8,0,0,1,28.919,15Z" style="fill:#009688"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"><rect x="31" y="23" width="2" height="2" rx="0.5" style="fill:#009688"/><path d="M29.5,27a.5.5,0,0,1-.354-.854l2-2a.5.5,0,0,1,.708.708l-2,2A.5.5,0,0,1,29.5,27Z" style="fill:#009688"/><path d="M34.5,27a.5.5,0,0,1-.354-.146l-2-2a.5.5,0,0,1,.708-.708l2,2A.5.5,0,0,1,34.5,27Z" style="fill:#009688"/><path d="M33.5,35h-3A1.5,1.5,0,0,1,29,33.5v-7a.5.5,0,0,1,1,0v7a.5.5,0,0,0,.5.5h3a.5.5,0,0,0,.5-.5v-7a.5.5,0,0,1,1,0v7A1.5,1.5,0,0,1,33.5,35Z" style="fill:#009688"/><path d="M34.5,27h-5a.5.5,0,0,1,0-1h5a.5.5,0,0,1,0,1Z" style="fill:#009688"/><rect x="28" y="23" width="1" height="1" style="fill:#009688"/><rect x="26" y="22" width="1" height="1" style="fill:#009688"/><rect x="26" y="24" width="1" height="1" style="fill:#009688"/><rect x="24" y="23" width="1" height="1" style="fill:#009688"/><rect x="24" y="25" width="1" height="1" style="fill:#009688"/><rect x="24" y="21" width="1" height="1" style="fill:#009688"/><rect x="22" y="22" width="1" height="1" style="fill:#009688"/><rect x="22" y="24" width="1" height="1" style="fill:#009688"/><rect x="22" y="26" width="1" height="1" style="fill:#009688"/><rect x="22" y="20" width="1" height="1" style="fill:#009688"/><path d="M34.5,22a.5.5,0,0,1-.5-.5v-9a.5.5,0,0,1,1,0v9A.5.5,0,0,1,34.5,22Z" style="fill:#009688"/><path d="M34.5,13a.5.5,0,0,1-.5-.5v-7a.5.5,0,0,0-.5-.5H5.5a.5.5,0,0,0-.5.5v6a.5.5,0,0,1-1,0v-6A1.5,1.5,0,0,1,5.5,4h28A1.5,1.5,0,0,1,35,5.5v7A.5.5,0,0,1,34.5,13Z" style="fill:#b6b6b6"/><path d="M26.5,35H5.5A1.5,1.5,0,0,1,4,33.5v-22a.5.5,0,0,1,1,0v22a.5.5,0,0,0,.5.5h21a.5.5,0,0,1,0,1Z" style="fill:#009688"/><path d="M12.5,31A1.5,1.5,0,1,1,14,29.5,1.5,1.5,0,0,1,12.5,31Zm0-2a.5.5,0,1,0,.5.5A.5.5,0,0,0,12.5,29Z" style="fill:#009688"/><path d="M10.5,26A2.5,2.5,0,1,1,13,23.5,2.5,2.5,0,0,1,10.5,26Zm0-4A1.5,1.5,0,1,0,12,23.5,1.5,1.5,0,0,0,10.5,22Z" style="fill:#009688"/><path d="M28.919,15c-2.773,0-5.51-1.29-7.667-2.521C17.885,10.56,11.269,8,4.783,12.458a.5.5,0,1,1-.566-.824c7.194-4.944,14.656-1.662,17.531-.022,3.739,2.133,8.524,4.07,12.394.086a.5.5,0,1,1,.716.7A8,8,0,0,1,28.919,15Z" style="fill:#009688"/></svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="16" viewBox="0 0 14 16"><polyline points="3.604 11.354 8.604 9.354 13.604 11.354" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round"/><polyline points="3.604 6.354 8.604 4.354 13.604 6.354" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="16" viewBox="0 0 14 16"><polyline points="13.604 4.354 8.604 6.354 3.604 4.354" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round"/><polyline points="13.604 9.354 8.604 11.354 3.604 9.354" style="fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round"/></svg>

Before

Width:  |  Height:  |  Size: 351 B

After

Width:  |  Height:  |  Size: 350 B

Before After
Before After

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