Compare commits
73 Commits
Version-1.
...
v2.02.00.6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
72a3a1e841 | ||
|
|
87acaa14f7 | ||
|
|
dab82d0248 | ||
|
|
15dd71693d | ||
|
|
2fa18f50c6 | ||
|
|
38c3592758 | ||
|
|
8a68adb427 | ||
|
|
661b112a68 | ||
|
|
8d4d60ec48 | ||
|
|
e3f49c2fb5 | ||
|
|
5effa59bd0 | ||
|
|
8ed41b9f06 | ||
|
|
fc0a06deaa | ||
|
|
a253e093f8 | ||
|
|
64806161f0 | ||
|
|
4dadec668b | ||
|
|
eb7e027385 | ||
|
|
7f04d94ea1 | ||
|
|
f60592f1a0 | ||
|
|
e0d447172c | ||
|
|
bafe693d0a | ||
|
|
c56a6849eb | ||
|
|
e8c9baa840 | ||
|
|
688396a0a0 | ||
|
|
8c9640a666 | ||
|
|
37aa092244 | ||
|
|
60d6348a42 | ||
|
|
6d0ec79031 | ||
|
|
b68290818e | ||
|
|
031525a16e | ||
|
|
5ac6bf0ccb | ||
|
|
958f8339bc | ||
|
|
9b0892b7c2 | ||
|
|
ef9e434eac | ||
|
|
652ba5e232 | ||
|
|
18c33f93a6 | ||
|
|
011619cf23 | ||
|
|
126534997a | ||
|
|
eae8e18c3a | ||
|
|
3fe258372a | ||
|
|
524bd808f3 | ||
|
|
156efaf48b | ||
|
|
24b78d2251 | ||
|
|
93ac431989 | ||
|
|
1c65d0ad5a | ||
|
|
a19b41c650 | ||
|
|
ffb5d3da8a | ||
|
|
d32f03deb8 | ||
|
|
7d213ce20c | ||
|
|
29360eb5e5 | ||
|
|
5e2ebff297 | ||
|
|
c2b046e661 | ||
|
|
dcdb92f45e | ||
|
|
fc45eaa121 | ||
|
|
1957136227 | ||
|
|
afc204307c | ||
|
|
b3e22f837b | ||
|
|
e2bde71a1c | ||
|
|
a320582cdc | ||
|
|
360ceaa458 | ||
|
|
973d18ea63 | ||
|
|
1c5fda6cad | ||
|
|
4baf9e41c5 | ||
|
|
dd004ebffd | ||
|
|
1244542711 | ||
|
|
ccb7e095e1 | ||
|
|
79518648c0 | ||
|
|
7eb6543991 | ||
|
|
a26696f35e | ||
|
|
459e7822db | ||
|
|
22572c2286 | ||
|
|
db50a0814e | ||
|
|
506ff7ad8c |
7
.gitignore
vendored
@@ -27,3 +27,10 @@ SVG
|
|||||||
**/process_full/
|
**/process_full/
|
||||||
**/machine_full/
|
**/machine_full/
|
||||||
**/filament_full/
|
**/filament_full/
|
||||||
|
.idea/
|
||||||
|
<<<<<<< HEAD (ad709f NEW: Official filament color selection approved)
|
||||||
|
=======
|
||||||
|
test.js
|
||||||
|
/.cache/
|
||||||
|
.clangd
|
||||||
|
>>>>>>> CHANGE (a6529d ENH: support parts skipping function)
|
||||||
@@ -84,17 +84,26 @@ fi
|
|||||||
|
|
||||||
DISTRIBUTION=$(awk -F= '/^ID=/ {print $2}' /etc/os-release)
|
DISTRIBUTION=$(awk -F= '/^ID=/ {print $2}' /etc/os-release)
|
||||||
VERSION=$(awk -F= '/^VERSION_ID=/ {print $2}' /etc/os-release)
|
VERSION=$(awk -F= '/^VERSION_ID=/ {print $2}' /etc/os-release)
|
||||||
# treat ubuntu as debian
|
# OSLIKE is a space-delineated list of similar distributions
|
||||||
if [ "${DISTRIBUTION}" == "ubuntu" ]
|
OSLIKE=$(awk -F= '/^ID_LIKE=/ {print $2}' /etc/os-release | tr -d '"')
|
||||||
then
|
|
||||||
DISTRIBUTION="debian"
|
# Iterate over a list of candidate distribution targets, first match is used
|
||||||
fi
|
for CANDIDATE in ${DISTRIBUTION} ${OSLIKE}; do
|
||||||
if [ ! -f ./linux.d/${DISTRIBUTION} ]
|
if [ -f ./linux.d/${CANDIDATE} ]
|
||||||
|
then
|
||||||
|
TARGET_DISTRO="${CANDIDATE}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z ${TARGET_DISTRO} ]
|
||||||
then
|
then
|
||||||
echo "Your distribution does not appear to be currently supported by these build scripts"
|
echo "Your distribution does not appear to be currently supported by these build scripts"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
source ./linux.d/${DISTRIBUTION}
|
|
||||||
|
echo "OS distribution is '${DISTRIBUTION}'. Using package dependencies for '${TARGET_DISTRO}'."
|
||||||
|
source ./linux.d/${TARGET_DISTRO}
|
||||||
|
|
||||||
echo "FOUND_GTK3=${FOUND_GTK3}"
|
echo "FOUND_GTK3=${FOUND_GTK3}"
|
||||||
if [[ -z "${FOUND_GTK3_DEV}" ]]
|
if [[ -z "${FOUND_GTK3_DEV}" ]]
|
||||||
@@ -119,7 +128,7 @@ fi
|
|||||||
if ! [[ -n "${DISABLE_PARALLEL_LIMIT}" ]]
|
if ! [[ -n "${DISABLE_PARALLEL_LIMIT}" ]]
|
||||||
then
|
then
|
||||||
FREE_MEM_GB=$(free -g -t | grep 'Mem' | rev | cut -d" " -f1 | rev)
|
FREE_MEM_GB=$(free -g -t | grep 'Mem' | rev | cut -d" " -f1 | rev)
|
||||||
MAX_THREADS=$(echo "scale=0; $FREE_MEM_GB / 2.5" | bc)
|
MAX_THREADS=$((FREE_MEM_GB * 10 / 25))
|
||||||
if [ "$MAX_THREADS" -lt 1 ]; then
|
if [ "$MAX_THREADS" -lt 1 ]; then
|
||||||
export CMAKE_BUILD_PARALLEL_LEVEL=1
|
export CMAKE_BUILD_PARALLEL_LEVEL=1
|
||||||
else
|
else
|
||||||
|
|||||||
244
BuildMac.sh
Normal file
@@ -0,0 +1,244 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
while getopts "1dpa:st:xbc:h" opt; do
|
||||||
|
case "${opt}" in
|
||||||
|
d )
|
||||||
|
export BUILD_TARGET="deps"
|
||||||
|
;;
|
||||||
|
p )
|
||||||
|
export PACK_DEPS="1"
|
||||||
|
;;
|
||||||
|
a )
|
||||||
|
export ARCH="$OPTARG"
|
||||||
|
;;
|
||||||
|
s )
|
||||||
|
export BUILD_TARGET="slicer"
|
||||||
|
;;
|
||||||
|
t )
|
||||||
|
export OSX_DEPLOYMENT_TARGET="$OPTARG"
|
||||||
|
;;
|
||||||
|
x )
|
||||||
|
export SLICER_CMAKE_GENERATOR="Ninja"
|
||||||
|
export SLICER_BUILD_TARGET="all"
|
||||||
|
export DEPS_CMAKE_GENERATOR="Ninja"
|
||||||
|
;;
|
||||||
|
b )
|
||||||
|
export BUILD_ONLY="1"
|
||||||
|
;;
|
||||||
|
c )
|
||||||
|
export BUILD_CONFIG="$OPTARG"
|
||||||
|
;;
|
||||||
|
1 )
|
||||||
|
export CMAKE_BUILD_PARALLEL_LEVEL=1
|
||||||
|
;;
|
||||||
|
h ) echo "Usage: ./BuildMac.sh [-1][-d][-s][-x][-b][-c]"
|
||||||
|
echo " -d: Build deps"
|
||||||
|
echo " -a: Set ARCHITECTURE (arm64 or x86_64 or universal)"
|
||||||
|
echo " -s: Build slicer only"
|
||||||
|
echo " -t: Specify minimum version of the target platform, default is 10.15"
|
||||||
|
echo " -x: Use Ninja CMake generator, default is Xcode"
|
||||||
|
echo " -b: Build without reconfiguring CMake"
|
||||||
|
echo " -c: Set CMake build configuration, default is Release"
|
||||||
|
echo " -1: limit builds to 1 core (where possible)"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$ARCH" ]; then
|
||||||
|
ARCH="$(uname -m)"
|
||||||
|
export ARCH
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$BUILD_CONFIG" ]; then
|
||||||
|
export BUILD_CONFIG="Release"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$BUILD_TARGET" ]; then
|
||||||
|
export BUILD_TARGET="all"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$SLICER_CMAKE_GENERATOR" ]; then
|
||||||
|
export SLICER_CMAKE_GENERATOR="Xcode"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$SLICER_BUILD_TARGET" ]; then
|
||||||
|
export SLICER_BUILD_TARGET="ALL_BUILD"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$DEPS_CMAKE_GENERATOR" ]; then
|
||||||
|
export DEPS_CMAKE_GENERATOR="Unix Makefiles"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$OSX_DEPLOYMENT_TARGET" ]; then
|
||||||
|
export OSX_DEPLOYMENT_TARGET="10.15"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Build params:"
|
||||||
|
echo " - ARCH: $ARCH"
|
||||||
|
echo " - BUILD_CONFIG: $BUILD_CONFIG"
|
||||||
|
echo " - BUILD_TARGET: $BUILD_TARGET"
|
||||||
|
echo " - CMAKE_GENERATOR: $SLICER_CMAKE_GENERATOR for Slicer, $DEPS_CMAKE_GENERATOR for deps"
|
||||||
|
echo " - OSX_DEPLOYMENT_TARGET: $OSX_DEPLOYMENT_TARGET"
|
||||||
|
echo " - CMAKE_BUILD_PARALLEL_LEVEL: $CMAKE_BUILD_PARALLEL_LEVEL"
|
||||||
|
echo
|
||||||
|
|
||||||
|
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$ARCH"
|
||||||
|
DEPS_DIR="$PROJECT_DIR/deps"
|
||||||
|
DEPS_BUILD_DIR="$DEPS_DIR/build/$ARCH"
|
||||||
|
DEPS="$DEPS_BUILD_DIR/QIDIStudio_deps"
|
||||||
|
|
||||||
|
if [ "$SLICER_CMAKE_GENERATOR" == "Xcode" ]; then
|
||||||
|
export BUILD_DIR_CONFIG_SUBDIR="/$BUILD_CONFIG"
|
||||||
|
else
|
||||||
|
export BUILD_DIR_CONFIG_SUBDIR=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
function build_deps() {
|
||||||
|
# iterate over two architectures: x86_64 and arm64
|
||||||
|
for _ARCH in x86_64 arm64; do
|
||||||
|
# if ARCH is universal or equal to _ARCH
|
||||||
|
if [ "$ARCH" == "universal" ] || [ "$ARCH" == "$_ARCH" ]; then
|
||||||
|
|
||||||
|
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$_ARCH"
|
||||||
|
DEPS_BUILD_DIR="$DEPS_DIR/build/$_ARCH"
|
||||||
|
DEPS="$DEPS_BUILD_DIR/QIDIStudio_deps"
|
||||||
|
|
||||||
|
echo "Building deps..."
|
||||||
|
(
|
||||||
|
set -x
|
||||||
|
mkdir -p "$DEPS"
|
||||||
|
cd "$DEPS_BUILD_DIR"
|
||||||
|
if [ "1." != "$BUILD_ONLY". ]; then
|
||||||
|
cmake "${DEPS_DIR}" \
|
||||||
|
-G "${DEPS_CMAKE_GENERATOR}" \
|
||||||
|
-DDESTDIR="$DEPS" \
|
||||||
|
-DOPENSSL_ARCH="darwin64-${_ARCH}-cc" \
|
||||||
|
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
|
||||||
|
-DCMAKE_OSX_ARCHITECTURES:STRING="${_ARCH}" \
|
||||||
|
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
|
||||||
|
fi
|
||||||
|
cmake --build . --parallel ${CMAKE_BUILD_PARALLEL_LEVEL} --config "$BUILD_CONFIG" --target deps
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function pack_deps() {
|
||||||
|
echo "Packing deps..."
|
||||||
|
(
|
||||||
|
set -x
|
||||||
|
cd "$DEPS_DIR"
|
||||||
|
tar -zcvf "QIDIStudio_dep_mac_${ARCH}_$(date +"%Y%m%d").tar.gz" "build"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function build_slicer() {
|
||||||
|
# iterate over two architectures: x86_64 and arm64
|
||||||
|
for _ARCH in x86_64 arm64; do
|
||||||
|
# if ARCH is universal or equal to _ARCH
|
||||||
|
if [ "$ARCH" == "universal" ] || [ "$ARCH" == "$_ARCH" ]; then
|
||||||
|
|
||||||
|
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$_ARCH"
|
||||||
|
DEPS_BUILD_DIR="$DEPS_DIR/build/$_ARCH"
|
||||||
|
DEPS="$DEPS_BUILD_DIR/QIDIStudio_deps"
|
||||||
|
|
||||||
|
echo "Building slicer for $_ARCH..."
|
||||||
|
(
|
||||||
|
set -x
|
||||||
|
mkdir -p "$PROJECT_BUILD_DIR"
|
||||||
|
cd "$PROJECT_BUILD_DIR"
|
||||||
|
if [ "1." != "$BUILD_ONLY". ]; then
|
||||||
|
cmake "${PROJECT_DIR}" \
|
||||||
|
-G "${SLICER_CMAKE_GENERATOR}" \
|
||||||
|
-DQDT_RELEASE_TO_PUBLIC=1 \
|
||||||
|
-DQDT_INTERNAL_TESTING=0 \
|
||||||
|
-DCMAKE_PREFIX_PATH="$DEPS/usr/local" \
|
||||||
|
-DCMAKE_INSTALL_PREFIX="$PWD/QIDIStudio" \
|
||||||
|
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
|
||||||
|
-DCMAKE_MACOSX_RPATH=ON \
|
||||||
|
-DCMAKE_INSTALL_RPATH="${DEPS}/usr/local" \
|
||||||
|
-DCMAKE_MACOSX_BUNDLE=ON \
|
||||||
|
-DCMAKE_OSX_ARCHITECTURES="${_ARCH}" \
|
||||||
|
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
|
||||||
|
fi
|
||||||
|
cmake --build . --config "$BUILD_CONFIG" --target "$SLICER_BUILD_TARGET"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
echo "Fix macOS app package..."
|
||||||
|
(
|
||||||
|
cd "$PROJECT_BUILD_DIR"
|
||||||
|
mkdir -p QIDIStudio
|
||||||
|
cd QIDIStudio
|
||||||
|
# remove previously built app
|
||||||
|
rm -rf ./QIDIStudio.app
|
||||||
|
# fully copy newly built app
|
||||||
|
cp -pR "../src$BUILD_DIR_CONFIG_SUBDIR/QIDIStudio.app" ./QIDIStudio.app
|
||||||
|
# fix resources
|
||||||
|
resources_path=$(readlink ./QIDIStudio.app/Contents/Resources)
|
||||||
|
rm ./QIDIStudio.app/Contents/Resources
|
||||||
|
cp -R "$resources_path" ./QIDIStudio.app/Contents/Resources
|
||||||
|
# delete .DS_Store file
|
||||||
|
find ./QIDIStudio.app/ -name '.DS_Store' -delete
|
||||||
|
)
|
||||||
|
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function build_universal() {
|
||||||
|
echo "Building universal binary..."
|
||||||
|
|
||||||
|
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$ARCH"
|
||||||
|
|
||||||
|
# Create universal binary
|
||||||
|
echo "Creating universal binary..."
|
||||||
|
# PROJECT_BUILD_DIR="$PROJECT_DIR/build_Universal"
|
||||||
|
mkdir -p "$PROJECT_BUILD_DIR/QIDIStudio"
|
||||||
|
UNIVERSAL_APP="$PROJECT_BUILD_DIR/QIDIStudio/QIDIStudio.app"
|
||||||
|
rm -rf "$UNIVERSAL_APP"
|
||||||
|
cp -R "$PROJECT_DIR/build/arm64/QIDIStudio/QIDIStudio.app" "$UNIVERSAL_APP"
|
||||||
|
|
||||||
|
# Get the binary path inside the .app bundle
|
||||||
|
BINARY_PATH="Contents/MacOS/QIDIStudio"
|
||||||
|
|
||||||
|
# Create universal binary using lipo
|
||||||
|
lipo -create \
|
||||||
|
"$PROJECT_DIR/build/x86_64/QIDIStudio/QIDIStudio.app/$BINARY_PATH" \
|
||||||
|
"$PROJECT_DIR/build/arm64/QIDIStudio/QIDIStudio.app/$BINARY_PATH" \
|
||||||
|
-output "$UNIVERSAL_APP/$BINARY_PATH"
|
||||||
|
|
||||||
|
echo "Universal binary created at $UNIVERSAL_APP"
|
||||||
|
}
|
||||||
|
|
||||||
|
case "${BUILD_TARGET}" in
|
||||||
|
all)
|
||||||
|
build_deps
|
||||||
|
build_slicer
|
||||||
|
;;
|
||||||
|
deps)
|
||||||
|
build_deps
|
||||||
|
;;
|
||||||
|
slicer)
|
||||||
|
build_slicer
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown target: $BUILD_TARGET. Available targets: deps, slicer, all."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ "$ARCH" = "universal" ] && [ "$BUILD_TARGET" != "deps" ]; then
|
||||||
|
build_universal
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "1." == "$PACK_DEPS". ]; then
|
||||||
|
pack_deps
|
||||||
|
fi
|
||||||
@@ -42,6 +42,8 @@ set(SLIC3R_GTK "2" CACHE STRING "GTK version to use with wxWidgets on Linux")
|
|||||||
|
|
||||||
set(IS_CROSS_COMPILE FALSE)
|
set(IS_CROSS_COMPILE FALSE)
|
||||||
|
|
||||||
|
set(FLATPAK FALSE CACHE BOOL "Not copy FFMPEG file")
|
||||||
|
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
set(CMAKE_FIND_FRAMEWORK LAST)
|
set(CMAKE_FIND_FRAMEWORK LAST)
|
||||||
@@ -53,7 +55,12 @@ if (APPLE)
|
|||||||
if (CMAKE_MACOSX_BUNDLE)
|
if (CMAKE_MACOSX_BUNDLE)
|
||||||
set(CMAKE_INSTALL_RPATH @executable_path/../Frameworks)
|
set(CMAKE_INSTALL_RPATH @executable_path/../Frameworks)
|
||||||
endif()
|
endif()
|
||||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version" FORCE)
|
if (NOT CMAKE_OSX_DEPLOYMENT_TARGET)
|
||||||
|
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version" FORCE)
|
||||||
|
endif ()
|
||||||
|
message(STATUS "CMAKE_OSX_DEPLOYMENT_TARGET: ${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
||||||
|
elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
|
set(CMAKE_INSTALL_RPATH "$ORIGIN")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Proposal for C++ unit tests and sandboxes
|
# Proposal for C++ unit tests and sandboxes
|
||||||
@@ -167,6 +174,15 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|||||||
# WIN10SDK_PATH is used to point CMake to the WIN10 SDK installation directory.
|
# WIN10SDK_PATH is used to point CMake to the WIN10 SDK installation directory.
|
||||||
# We pick it from environment if it is not defined in another way
|
# We pick it from environment if it is not defined in another way
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
|
if(EXISTS "${CMAKE_SOURCE_DIR}/scripts/hooks/pre-commit" AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
||||||
|
message(STATUS ".git: directory")
|
||||||
|
configure_file(
|
||||||
|
"${CMAKE_SOURCE_DIR}/scripts/hooks/pre-commit"
|
||||||
|
"${CMAKE_SOURCE_DIR}/.git/hooks/pre-commit"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package(PkgConfig REQUIRED)
|
||||||
if(NOT DEFINED WIN10SDK_PATH)
|
if(NOT DEFINED WIN10SDK_PATH)
|
||||||
if(DEFINED ENV{WIN10SDK_PATH})
|
if(DEFINED ENV{WIN10SDK_PATH})
|
||||||
set(WIN10SDK_PATH "$ENV{WIN10SDK_PATH}")
|
set(WIN10SDK_PATH "$ENV{WIN10SDK_PATH}")
|
||||||
@@ -234,6 +250,8 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP
|
|||||||
# On GCC and Clang, no return from a non-void function is a warning only. Here, we make it an error.
|
# On GCC and Clang, no return from a non-void function is a warning only. Here, we make it an error.
|
||||||
add_compile_options(-Werror=return-type)
|
add_compile_options(-Werror=return-type)
|
||||||
|
|
||||||
|
# add_compile_options(-Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-label -Wno-unused-local-typedefs)
|
||||||
|
|
||||||
# removes LOTS of extraneous Eigen warnings (GCC only supports it since 6.1)
|
# removes LOTS of extraneous Eigen warnings (GCC only supports it since 6.1)
|
||||||
# https://eigen.tuxfamily.org/bz/show_bug.cgi?id=1221
|
# https://eigen.tuxfamily.org/bz/show_bug.cgi?id=1221
|
||||||
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0)
|
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0)
|
||||||
@@ -247,6 +265,10 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP
|
|||||||
add_compile_options(-Wno-deprecated-declarations)
|
add_compile_options(-Wno-deprecated-declarations)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if((${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang") AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 15)
|
||||||
|
add_compile_options(-Wno-error=enum-constexpr-conversion)
|
||||||
|
endif()
|
||||||
|
|
||||||
#GCC generates loads of -Wunknown-pragmas when compiling igl. The fix is not easy due to a bug in gcc, see
|
#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=66943 or
|
||||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431
|
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431
|
||||||
@@ -301,7 +323,7 @@ if(WIN32)
|
|||||||
add_definitions(-D_USE_MATH_DEFINES -D_WIN32 -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS)
|
add_definitions(-D_USE_MATH_DEFINES -D_WIN32 -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS)
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
# BOOST_ALL_NO_LIB: Avoid the automatic linking of Boost libraries on Windows. Rather rely on explicit linking.
|
# BOOST_ALL_NO_LIB: Avoid the automatic linking of Boost libraries on Windows. Rather rely on explicit linking.
|
||||||
add_definitions(-DBOOST_ALL_NO_LIB -DBOOST_USE_WINAPI_VERSION=0x601 -DBOOST_SYSTEM_USE_UTF8 )
|
add_definitions(-DBOOST_ALL_NO_LIB -DBOOST_USE_WINAPI_VERSION=0x602 -DBOOST_SYSTEM_USE_UTF8 )
|
||||||
# Force the source code encoding to UTF-8. See QIDIStudio GH pull request #5583
|
# Force the source code encoding to UTF-8. See QIDIStudio GH pull request #5583
|
||||||
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
|
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
|
||||||
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
|
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
|
||||||
@@ -343,7 +365,7 @@ endif()
|
|||||||
# set(Boost_COMPILER "-mgw81")
|
# set(Boost_COMPILER "-mgw81")
|
||||||
# boost::process was introduced first in version 1.64.0,
|
# boost::process was introduced first in version 1.64.0,
|
||||||
# boost::beast::detail::base64 was introduced first in version 1.66.0
|
# boost::beast::detail::base64 was introduced first in version 1.66.0
|
||||||
set(MINIMUM_BOOST_VERSION "1.66.0")
|
set(MINIMUM_BOOST_VERSION "1.83.0")
|
||||||
set(_boost_components "system;filesystem;thread;log;locale;regex;chrono;atomic;date_time;iostreams")
|
set(_boost_components "system;filesystem;thread;log;locale;regex;chrono;atomic;date_time;iostreams")
|
||||||
find_package(Boost ${MINIMUM_BOOST_VERSION} REQUIRED COMPONENTS ${_boost_components})
|
find_package(Boost ${MINIMUM_BOOST_VERSION} REQUIRED COMPONENTS ${_boost_components})
|
||||||
|
|
||||||
@@ -362,7 +384,7 @@ endif()
|
|||||||
function(slic3r_remap_configs targets from_Cfg to_Cfg)
|
function(slic3r_remap_configs targets from_Cfg to_Cfg)
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
string(TOUPPER ${from_Cfg} from_CFG)
|
string(TOUPPER ${from_Cfg} from_CFG)
|
||||||
|
|
||||||
foreach(tgt ${targets})
|
foreach(tgt ${targets})
|
||||||
if(TARGET ${tgt})
|
if(TARGET ${tgt})
|
||||||
set_target_properties(${tgt} PROPERTIES MAP_IMPORTED_CONFIG_${from_CFG} ${to_Cfg})
|
set_target_properties(${tgt} PROPERTIES MAP_IMPORTED_CONFIG_${from_CFG} ${to_Cfg})
|
||||||
@@ -500,7 +522,7 @@ find_package(cereal REQUIRED)
|
|||||||
set(L10N_DIR "${SLIC3R_RESOURCES_DIR}/i18n")
|
set(L10N_DIR "${SLIC3R_RESOURCES_DIR}/i18n")
|
||||||
set(QDT_L18N_DIR "${CMAKE_CURRENT_SOURCE_DIR}/qdt/i18n")
|
set(QDT_L18N_DIR "${CMAKE_CURRENT_SOURCE_DIR}/qdt/i18n")
|
||||||
add_custom_target(gettext_make_pot
|
add_custom_target(gettext_make_pot
|
||||||
COMMAND xgettext --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost
|
COMMAND xgettext --keyword=L --no-wrap --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost
|
||||||
-f "${QDT_L18N_DIR}/list.txt"
|
-f "${QDT_L18N_DIR}/list.txt"
|
||||||
-o "${QDT_L18N_DIR}/QIDIStudio.pot"
|
-o "${QDT_L18N_DIR}/QIDIStudio.pot"
|
||||||
COMMAND hintsToPot ${SLIC3R_RESOURCES_DIR} ${QDT_L18N_DIR}
|
COMMAND hintsToPot ${SLIC3R_RESOURCES_DIR} ${QDT_L18N_DIR}
|
||||||
@@ -517,7 +539,7 @@ foreach(po_file ${QDT_L10N_PO_FILES})
|
|||||||
SET(po_new_file "${po_dir}/QIDIStudio_.po")
|
SET(po_new_file "${po_dir}/QIDIStudio_.po")
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET gettext_merge_po_with_pot PRE_BUILD
|
TARGET gettext_merge_po_with_pot PRE_BUILD
|
||||||
COMMAND msgmerge -N -o ${po_file} ${po_file} "${QDT_L18N_DIR}/QIDIStudio.pot"
|
COMMAND msgmerge --no-wrap -N -o ${po_file} ${po_file} "${QDT_L18N_DIR}/QIDIStudio.pot"
|
||||||
DEPENDS ${po_file}
|
DEPENDS ${po_file}
|
||||||
)
|
)
|
||||||
endforeach()
|
endforeach()
|
||||||
@@ -619,6 +641,10 @@ function(qidistudio_copy_dlls target config postfix output_dlls)
|
|||||||
${CMAKE_PREFIX_PATH}/bin/occt/TKXDESTEP.dll
|
${CMAKE_PREFIX_PATH}/bin/occt/TKXDESTEP.dll
|
||||||
${CMAKE_PREFIX_PATH}/bin/occt/TKXSBase.dll
|
${CMAKE_PREFIX_PATH}/bin/occt/TKXSBase.dll
|
||||||
${CMAKE_PREFIX_PATH}/bin/freetype.dll
|
${CMAKE_PREFIX_PATH}/bin/freetype.dll
|
||||||
|
${CMAKE_PREFIX_PATH}/bin/avcodec-61.dll
|
||||||
|
${CMAKE_PREFIX_PATH}/bin/swresample-5.dll
|
||||||
|
${CMAKE_PREFIX_PATH}/bin/swscale-8.dll
|
||||||
|
${CMAKE_PREFIX_PATH}/bin/avutil-59.dll
|
||||||
DESTINATION ${_out_dir})
|
DESTINATION ${_out_dir})
|
||||||
|
|
||||||
set(${output_dlls}
|
set(${output_dlls}
|
||||||
@@ -654,11 +680,50 @@ function(qidistudio_copy_dlls target config postfix output_dlls)
|
|||||||
${_out_dir}/TKXSBase.dll
|
${_out_dir}/TKXSBase.dll
|
||||||
|
|
||||||
${_out_dir}/freetype.dll
|
${_out_dir}/freetype.dll
|
||||||
|
${_out_dir}/avcodec-61.dll
|
||||||
|
${_out_dir}/swresample-5.dll
|
||||||
|
${_out_dir}/swscale-8.dll
|
||||||
|
${_out_dir}/avutil-59.dll
|
||||||
PARENT_SCOPE
|
PARENT_SCOPE
|
||||||
)
|
)
|
||||||
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
function(qidistudio_copy_sos target config postfix output_sos)
|
||||||
|
|
||||||
|
set(_out_dir "${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
|
message ("set out_dir to CMAKE_CURRENT_BINARY_DIR: ${_out_dir}")
|
||||||
|
|
||||||
|
file(COPY ${CMAKE_PREFIX_PATH}/lib/libavcodec.so
|
||||||
|
${CMAKE_PREFIX_PATH}/lib/libavcodec.so.61
|
||||||
|
${CMAKE_PREFIX_PATH}/lib/libavcodec.so.61.3.100
|
||||||
|
${CMAKE_PREFIX_PATH}/lib/libavutil.so
|
||||||
|
${CMAKE_PREFIX_PATH}/lib/libavutil.so.59
|
||||||
|
${CMAKE_PREFIX_PATH}/lib/libavutil.so.59.8.100
|
||||||
|
${CMAKE_PREFIX_PATH}/lib/libswscale.so
|
||||||
|
${CMAKE_PREFIX_PATH}/lib/libswscale.so.8
|
||||||
|
${CMAKE_PREFIX_PATH}/lib/libswscale.so.8.1.100
|
||||||
|
${CMAKE_PREFIX_PATH}/lib/libswresample.so
|
||||||
|
${CMAKE_PREFIX_PATH}/lib/libswresample.so.5
|
||||||
|
${CMAKE_PREFIX_PATH}/lib/libswresample.so.5.1.100
|
||||||
|
DESTINATION ${_out_dir})
|
||||||
|
|
||||||
|
set(${output_dlls}
|
||||||
|
${_out_dir}/libavcodec.so
|
||||||
|
${_out_dir}/libavcodec.so.61
|
||||||
|
${_out_dir}/libavcodec.so.61.3.100
|
||||||
|
${_out_dir}/libavutil.so
|
||||||
|
${_out_dir}/libavutil.so.59
|
||||||
|
${_out_dir}/libavutil.so.59.8.100
|
||||||
|
${_out_dir}/libswscale.so
|
||||||
|
${_out_dir}/libswscale.so.8
|
||||||
|
${_out_dir}/libswscale.so.8.1.100
|
||||||
|
${_out_dir}/libswresample.so
|
||||||
|
${_out_dir}/libswresample.so.5
|
||||||
|
${_out_dir}/libswresample.so.5.1.100
|
||||||
|
PARENT_SCOPE
|
||||||
|
)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
# libslic3r, QIDIStudio GUI and the QIDIStudio executable.
|
# libslic3r, QIDIStudio GUI and the QIDIStudio executable.
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
@@ -714,4 +779,18 @@ else ()
|
|||||||
install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "${CMAKE_INSTALL_PREFIX}/resources")
|
install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "${CMAKE_INSTALL_PREFIX}/resources")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND NOT FLATPAK)
|
||||||
|
set(LIBRARY_FILES
|
||||||
|
${LIBDIR_BIN}/libavcodec.so.61
|
||||||
|
${LIBDIR_BIN}/libavcodec.so.61.3.100
|
||||||
|
${LIBDIR_BIN}/libavutil.so.59
|
||||||
|
${LIBDIR_BIN}/libavutil.so.59.8.100
|
||||||
|
${LIBDIR_BIN}/libswresample.so.5
|
||||||
|
${LIBDIR_BIN}/libswresample.so.5.1.100
|
||||||
|
${LIBDIR_BIN}/libswscale.so.8
|
||||||
|
${LIBDIR_BIN}/libswscale.so.8.1.100
|
||||||
|
)
|
||||||
|
install(FILES ${LIBRARY_FILES} DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
|
||||||
|
endif ()
|
||||||
|
|
||||||
configure_file(${LIBDIR}/platform/unix/fhs.hpp.in ${LIBDIR_BIN}/platform/unix/fhs.hpp)
|
configure_file(${LIBDIR}/platform/unix/fhs.hpp.in ${LIBDIR_BIN}/platform/unix/fhs.hpp)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ set -x
|
|||||||
# the simplicity of a single Docker image and a one-time compilation
|
# the simplicity of a single Docker image and a one-time compilation
|
||||||
# seems better.
|
# seems better.
|
||||||
docker build -t qidistudio \
|
docker build -t qidistudio \
|
||||||
--build-arg USER=$USER \
|
--build-arg USER=${USER:-root} \
|
||||||
--build-arg UID=$(id -u) \
|
--build-arg UID=$(id -u) \
|
||||||
--build-arg GID=$(id -g) \
|
--build-arg GID=$(id -g) \
|
||||||
$PROJECT_ROOT
|
$PROJECT_ROOT
|
||||||
|
|||||||
81
DockerEntrypoint.sh
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Entrypoint script to create an out-of-the-box experience for QIDIStudio.
|
||||||
|
# Perform some initial setup if none was done previously.
|
||||||
|
# It is not necessary if you know what you are doing. Feel free to go
|
||||||
|
# to the Dockerfile and switch the entrypoint to the QIDIStudio binary.
|
||||||
|
|
||||||
|
# Check if the current effective user is root
|
||||||
|
|
||||||
|
if [ "$EUID" -eq 0 ]; then
|
||||||
|
echo "No User specified at build time."
|
||||||
|
if [ -z "$RUN_USER" ] || [ -z "$RUN_UID" ] || [ -z "$RUN_GID" ] || [ "$RUN_UID" -eq 0 ]; then
|
||||||
|
echo "At least one of RUN_USER, RUN_UID, or RUN_GID is unset. Or 'root' was requested."
|
||||||
|
echo "Running as root"
|
||||||
|
|
||||||
|
if [ "$HOME" != "/root" ]; then
|
||||||
|
if [ ! -d "/root" ]; then
|
||||||
|
mkdir /root
|
||||||
|
chown root:root /root
|
||||||
|
chmod 700 /root
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
export HOME="/root"
|
||||||
|
EXEC_USER="root"
|
||||||
|
else
|
||||||
|
echo "Setting up a new user"
|
||||||
|
|
||||||
|
# Check if there is a already a valid user entry for the passed UID, if not create one
|
||||||
|
if [ -z "$(getent passwd "$RUN_UID" | cut -d: -f1)" ]; then
|
||||||
|
#GID=$(id -g)
|
||||||
|
echo "User specified at runtime. Performing setup."
|
||||||
|
groupadd -g "$RUN_GID" "$RUN_USER"
|
||||||
|
useradd -u "$RUN_UID" -g "$RUN_GID" -d "/home/$RUN_USER" "$RUN_USER"
|
||||||
|
usermod -aG sudo "$RUN_USER"
|
||||||
|
passwd -d "$RUN_USER"
|
||||||
|
|
||||||
|
#This will take forever to run, so we will just chown the build folder which contains the binaries
|
||||||
|
#chown -R "$RUN_UID":"$RUN_GID" /QIDIStudio
|
||||||
|
chown "$RUN_UID":"$RUN_GID" /QIDIStudio
|
||||||
|
chown -R "$RUN_UID":"$RUN_GID" /QIDIStudio/build
|
||||||
|
|
||||||
|
|
||||||
|
export HOME="/home/$RUN_USER"
|
||||||
|
EXEC_USER="$RUN_USER"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "User specified at build time."
|
||||||
|
CURRENT_USER=$(id -un)
|
||||||
|
if [ -n "$RUN_USER" ] && [ -n "$RUN_UID" ] && [ -n "$RUN_GID" ] && [ "$RUN_UID" -ne "$EUID" ]; then
|
||||||
|
echo "New User config passed at Runtime. Setting up."
|
||||||
|
if [ -z "$(getent passwd "$RUN_UID" | cut -d: -f1)" ]; then
|
||||||
|
sudo groupadd -g "$RUN_UID" "$RUN_USER"
|
||||||
|
sudo useradd -u "$RUN_UID" -g "$RUN_GID" -d "/home/$RUN_USER" "$RUN_USER"
|
||||||
|
sudo usermod -aG sudo "$RUN_USER"
|
||||||
|
passwd -d "$RUN_USER"
|
||||||
|
|
||||||
|
#sudo chown -R "$RUN_UID":"$RUN_GID" /QIDIStudio
|
||||||
|
chown "$RUN_UID":"$RUN_GID" /QIDIStudio
|
||||||
|
chown -R "$RUN_UID":"$RUN_GID" /QIDIStudio/build
|
||||||
|
|
||||||
|
export HOME="/home/$RUN_USER"
|
||||||
|
EXEC_USER="$RUN_USER"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Using Build time user."
|
||||||
|
EXEC_USER="$CURRENT_USER"
|
||||||
|
#It should've been set in Dockerfile, but just in case, uncomment this it there is problem
|
||||||
|
#export HOME="/home/$USER"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# make sure ~/.config folder exists so QIDI Studio will start
|
||||||
|
if [ ! -d "$HOME/.config" ]; then
|
||||||
|
mkdir -p "$HOME/.config"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Using su $USER -c will retain all the important ENV args when qidi Studio starts in a different shell
|
||||||
|
# Continue with QIDI Studio using correct user, passing all arguments
|
||||||
|
exec su "$EXEC_USER" -c "/QIDIStudio/build/package/bin/qidi-studio $*"
|
||||||
16
DockerRun.sh
@@ -5,15 +5,24 @@ set -x
|
|||||||
# -h $HOSTNAME \
|
# -h $HOSTNAME \
|
||||||
# If there's problems with the X display, try this
|
# If there's problems with the X display, try this
|
||||||
# -v /tmp/.X11-unix:/tmp/.X11-unix \
|
# -v /tmp/.X11-unix:/tmp/.X11-unix \
|
||||||
|
# or
|
||||||
|
# -v $HOME/.Xauthority:/root/.Xauthority \
|
||||||
|
# You also need to run "xhost +" on your host system
|
||||||
|
# QIDI Studio also require the parent directory for the configuration directory to be present to start
|
||||||
|
# to prevent your local machines's QIDI studio config passed to docker container when you map your home directory, add:
|
||||||
|
# -v :SHOME/.config/QIDIStudio
|
||||||
|
set -x
|
||||||
docker run \
|
docker run \
|
||||||
`# Use the hosts networking. Printer wifi and also dbus communication` \
|
`# Use the hosts networking. Printer wifi and also dbus communication` \
|
||||||
--net=host \
|
--net=host \
|
||||||
`# Some X installs will not have permissions to talk to sockets for shared memory` \
|
`# Some X installs will not have permissions to talk to sockets for shared memory` \
|
||||||
--ipc host \
|
--ipc host \
|
||||||
`# Run as your workstations username to keep permissions the same` \
|
|
||||||
-u $USER \
|
|
||||||
`# Bind mount your home directory into the container for loading/saving files` \
|
`# Bind mount your home directory into the container for loading/saving files` \
|
||||||
-v $HOME:/home/$USER \
|
-v $HOME:$HOME \
|
||||||
|
`# Pass some X Auth file to allow x11 to connect to your host x instance` \
|
||||||
|
-v $HOME/.Xauthority:/tmp/.Xauthority \
|
||||||
|
-v /tmp/.X11-unix:/tmp/.X11-unix \
|
||||||
|
-e XAUTHORITY=/tmp/.Xauthority \
|
||||||
`# Pass the X display number to the container` \
|
`# Pass the X display number to the container` \
|
||||||
-e DISPLAY=$DISPLAY \
|
-e DISPLAY=$DISPLAY \
|
||||||
`# It seems that libGL and dbus things need privileged mode` \
|
`# It seems that libGL and dbus things need privileged mode` \
|
||||||
@@ -24,4 +33,3 @@ docker run \
|
|||||||
--rm \
|
--rm \
|
||||||
`# Pass all parameters from this script to the qidi ENTRYPOINT binary` \
|
`# Pass all parameters from this script to the qidi ENTRYPOINT binary` \
|
||||||
qidistudio $*
|
qidistudio $*
|
||||||
|
|
||||||
|
|||||||
79
Dockerfile
@@ -1,5 +1,4 @@
|
|||||||
FROM docker.io/ubuntu:22.04
|
FROM docker.io/ubuntu:24.10
|
||||||
LABEL maintainer "DeftDawg <DeftDawg@gmail.com>"
|
|
||||||
|
|
||||||
# Disable interactive package configuration
|
# Disable interactive package configuration
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
@@ -14,6 +13,7 @@ RUN apt-get update && apt-get install -y \
|
|||||||
build-essential \
|
build-essential \
|
||||||
cmake \
|
cmake \
|
||||||
curl \
|
curl \
|
||||||
|
xvfb \
|
||||||
eglexternalplatform-dev \
|
eglexternalplatform-dev \
|
||||||
extra-cmake-modules \
|
extra-cmake-modules \
|
||||||
file \
|
file \
|
||||||
@@ -39,7 +39,6 @@ RUN apt-get update && apt-get install -y \
|
|||||||
libssl-dev \
|
libssl-dev \
|
||||||
libudev-dev \
|
libudev-dev \
|
||||||
libwayland-dev \
|
libwayland-dev \
|
||||||
libwebkit2gtk-4.0-dev \
|
|
||||||
libxkbcommon-dev \
|
libxkbcommon-dev \
|
||||||
locales \
|
locales \
|
||||||
locales-all \
|
locales-all \
|
||||||
@@ -47,6 +46,7 @@ RUN apt-get update && apt-get install -y \
|
|||||||
pkgconf \
|
pkgconf \
|
||||||
sudo \
|
sudo \
|
||||||
wayland-protocols \
|
wayland-protocols \
|
||||||
|
libwebkit2gtk-4.1-dev \
|
||||||
wget
|
wget
|
||||||
|
|
||||||
# Change your locale here if you want. See the output
|
# Change your locale here if you want. See the output
|
||||||
@@ -58,14 +58,55 @@ RUN locale-gen $LC_ALL
|
|||||||
# the CA cert path on every startup
|
# the CA cert path on every startup
|
||||||
ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
|
ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
|
||||||
|
|
||||||
COPY ./ QIDIStudio
|
COPY ./ /QIDIStudio
|
||||||
|
|
||||||
WORKDIR QIDIStudio
|
RUN chmod +x /QIDIStudio/DockerEntrypoint.sh
|
||||||
|
|
||||||
# These can run together, but we run them seperate for podman caching
|
WORKDIR /QIDIStudio
|
||||||
# Update System dependencies
|
|
||||||
|
# Ubuntu 24 Docker Image now come with default standard user "ubuntu"
|
||||||
|
# It might conflict with your mapped user, remove if user ubuntu exist
|
||||||
|
RUN if id "ubuntu" >/dev/null 2>&1; then userdel -r ubuntu; fi
|
||||||
|
|
||||||
|
# It's easier to run QIDI Studio as the same username,
|
||||||
|
# UID and GID as your workstation. Since we bind mount
|
||||||
|
# your home directory into the container, it's handy
|
||||||
|
# to keep permissions the same. Just in case, defaults
|
||||||
|
# are root.
|
||||||
|
|
||||||
|
# Set ARG values
|
||||||
|
# If user was passed from build it will create a user same
|
||||||
|
# as your workstation. Else it will use /root
|
||||||
|
|
||||||
|
# Setting ARG at build time is convienient for testing purposes
|
||||||
|
# otherwise the same commands will be executed at runtime
|
||||||
|
|
||||||
|
ARG USER=root
|
||||||
|
ARG UID=0
|
||||||
|
ARG GID=0
|
||||||
|
RUN if [ "$UID" != "0" ]; then \
|
||||||
|
groupadd -g $GID $USER && \
|
||||||
|
useradd -u $UID -g $GID -m -d /home/$USER $USER && \
|
||||||
|
mkdir -p /home/$USER && \
|
||||||
|
chown -R $UID:$GID /QIDIStudio && \
|
||||||
|
usermod -aG sudo $USER && \
|
||||||
|
passwd -d "$USER"; \
|
||||||
|
else \
|
||||||
|
mkdir -p /root/.config; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Allow password-less sudo for ALL users
|
||||||
|
RUN echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/999-passwordless
|
||||||
|
RUN chmod 440 /etc/sudoers.d/999-passwordless
|
||||||
|
|
||||||
|
# Update System dependencies(Run before user switch)
|
||||||
RUN ./BuildLinux.sh -u
|
RUN ./BuildLinux.sh -u
|
||||||
|
|
||||||
|
# Run as the mapped user (or root by default)
|
||||||
|
USER $USER
|
||||||
|
|
||||||
|
|
||||||
|
# These can run together, but we run them seperate for podman caching
|
||||||
# Build dependencies in ./deps
|
# Build dependencies in ./deps
|
||||||
RUN ./BuildLinux.sh -d
|
RUN ./BuildLinux.sh -d
|
||||||
|
|
||||||
@@ -73,22 +114,20 @@ RUN ./BuildLinux.sh -d
|
|||||||
RUN ./BuildLinux.sh -s
|
RUN ./BuildLinux.sh -s
|
||||||
|
|
||||||
# Build AppImage
|
# Build AppImage
|
||||||
ENV container podman
|
ENV container=podman
|
||||||
RUN ./BuildLinux.sh -i
|
RUN ./BuildLinux.sh -i
|
||||||
|
|
||||||
# It's easier to run QIDI Studio as the same username,
|
|
||||||
# UID and GID as your workstation. Since we bind mount
|
# Use bash as the shell
|
||||||
# your home directory into the container, it's handy
|
|
||||||
# to keep permissions the same. Just in case, defaults
|
|
||||||
# are root.
|
|
||||||
SHELL ["/bin/bash", "-l", "-c"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
ARG USER=root
|
|
||||||
ARG UID=0
|
# Point FFMPEG Library search to the binary built upon QIDIStudio build time
|
||||||
ARG GID=0
|
ENV LD_LIBRARY_PATH=/QIDIStudio/build/package/bin
|
||||||
RUN [[ "$UID" != "0" ]] \
|
|
||||||
&& groupadd -f -g $GID $USER \
|
|
||||||
&& useradd -u $UID -g $GID $USER
|
|
||||||
|
|
||||||
# Using an entrypoint instead of CMD because the binary
|
# Using an entrypoint instead of CMD because the binary
|
||||||
# accepts several command line arguments.
|
# accepts several command line arguments.
|
||||||
ENTRYPOINT ["/QIDIStudio/build/package/bin/qidi-studio"]
|
# entrypoint script will pass all arguments to QIDI-studio
|
||||||
|
# after the script finishes
|
||||||
|
|
||||||
|
#ENTRYPOINT ["/QIDIStudio/build/package/bin/QIDI-studio"]
|
||||||
|
ENTRYPOINT ["/QIDIStudio/DockerEntrypoint.sh"]
|
||||||
|
|||||||
@@ -2,30 +2,35 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
<string>English</string>
|
<string>English</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
||||||
<key>CFBundleGetInfoString</key>
|
<key>CFBundleGetInfoString</key>
|
||||||
<string>${MACOSX_BUNDLE_INFO_STRING}</string>
|
<string>${MACOSX_BUNDLE_INFO_STRING}</string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
|
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>com.qidilab.qidi-studio</string>
|
<string>com.qiditech.qidi-studio</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
<string>6.0</string>
|
<string>6.0</string>
|
||||||
<key>CFBundleLongVersionString</key>
|
<key>CFBundleLongVersionString</key>
|
||||||
<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
|
<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
|
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
|
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
|
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
|
||||||
|
<key>NSAppTransportSecurity</key>
|
||||||
|
<dict>
|
||||||
|
<key>NSAllowsArbitraryLoads</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
<key>CFBundleURLTypes</key>
|
<key>CFBundleURLTypes</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
@@ -129,5 +134,10 @@
|
|||||||
<true/>
|
<true/>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
|
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
|
||||||
|
<key>NSAppTransportSecurity</key>
|
||||||
|
<dict>
|
||||||
|
<key>NSAllowsArbitraryLoads</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
2
deps/Boost/0001-Boost-fix.patch
vendored
@@ -1,5 +1,5 @@
|
|||||||
From 1d6cd7c2f8640db3cda194c1b9b82f1e4b321395 Mon Sep 17 00:00:00 2001
|
From 1d6cd7c2f8640db3cda194c1b9b82f1e4b321395 Mon Sep 17 00:00:00 2001
|
||||||
From: "chunmao.guo" <chunmao.guo@qidilab.com>
|
From: "chunmao.guo" <chunmao.guo@qiditech.com>
|
||||||
Date: Thu, 5 Jan 2023 15:55:57 +0800
|
Date: Thu, 5 Jan 2023 15:55:57 +0800
|
||||||
Subject: [PATCH] FIX: limit_handles
|
Subject: [PATCH] FIX: limit_handles
|
||||||
|
|
||||||
|
|||||||
174
deps/Boost/Boost.cmake
vendored
@@ -1,160 +1,26 @@
|
|||||||
include(ExternalProject)
|
|
||||||
|
|
||||||
if (WIN32)
|
set(_context_abi_line "")
|
||||||
set(_bootstrap_cmd bootstrap.bat)
|
set(_context_arch_line "")
|
||||||
set(_build_cmd b2.exe)
|
if (APPLE AND CMAKE_OSX_ARCHITECTURES)
|
||||||
else()
|
if (CMAKE_OSX_ARCHITECTURES MATCHES "x86")
|
||||||
set(_bootstrap_cmd ./bootstrap.sh)
|
set(_context_abi_line "-DBOOST_CONTEXT_ABI:STRING=sysv")
|
||||||
set(_build_cmd ./b2)
|
elseif (CMAKE_OSX_ARCHITECTURES MATCHES "arm")
|
||||||
endif()
|
set (_context_abi_line "-DBOOST_CONTEXT_ABI:STRING=aapcs")
|
||||||
|
|
||||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
||||||
set(_boost_toolset gcc)
|
|
||||||
configure_file(${CMAKE_CURRENT_LIST_DIR}/user-config.jam boost-user-config.jam)
|
|
||||||
set(_patch_command ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/boost-user-config.jam ./tools/build/src/tools/user-config.jam)
|
|
||||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
|
||||||
# https://cmake.org/cmake/help/latest/variable/MSVC_VERSION.html
|
|
||||||
if (MSVC_VERSION EQUAL 1800)
|
|
||||||
# 1800 = VS 12.0 (v120 toolset)
|
|
||||||
set(_boost_toolset "msvc-12.0")
|
|
||||||
elseif (MSVC_VERSION EQUAL 1900)
|
|
||||||
# 1900 = VS 14.0 (v140 toolset)
|
|
||||||
set(_boost_toolset "msvc-14.0")
|
|
||||||
elseif (MSVC_VERSION LESS 1920)
|
|
||||||
# 1910-1919 = VS 15.0 (v141 toolset)
|
|
||||||
set(_boost_toolset "msvc-14.1")
|
|
||||||
elseif (MSVC_VERSION LESS 1930)
|
|
||||||
# 1920-1929 = VS 16.0 (v142 toolset)
|
|
||||||
set(_boost_toolset "msvc-14.2")
|
|
||||||
elseif (MSVC_VERSION LESS 1950)
|
|
||||||
# 1930-1949 = VS 17.0 (v143 toolset)
|
|
||||||
set(_boost_toolset "msvc-14.3")
|
|
||||||
else ()
|
|
||||||
message(FATAL_ERROR "Unsupported MSVC version")
|
|
||||||
endif ()
|
endif ()
|
||||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
set(_context_arch_line "-DBOOST_CONTEXT_ARCHITECTURE:STRING=${CMAKE_OSX_ARCHITECTURES}")
|
||||||
if (WIN32)
|
message(STATUS "BOOST param: ${_context_abi_line} ${_context_arch_line}")
|
||||||
set(_boost_toolset "clang-win")
|
|
||||||
elseif (APPLE)
|
|
||||||
set(_boost_toolset "clang")
|
|
||||||
else()
|
|
||||||
set(_boost_toolset clang)
|
|
||||||
configure_file(${CMAKE_CURRENT_LIST_DIR}/user-config.jam boost-user-config.jam)
|
|
||||||
set(_patch_command ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/boost-user-config.jam ./tools/build/src/tools/user-config.jam)
|
|
||||||
endif()
|
|
||||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
|
||||||
set(_boost_toolset "intel")
|
|
||||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
|
||||||
set(_boost_toolset "clang")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
message(STATUS "Deduced boost toolset: ${_boost_toolset} based on ${CMAKE_CXX_COMPILER_ID} compiler")
|
|
||||||
|
|
||||||
set(_libs "")
|
|
||||||
foreach(_comp ${DEP_Boost_COMPONENTS})
|
|
||||||
list(APPEND _libs "--with-${_comp}")
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
if (BUILD_SHARED_LIBS)
|
|
||||||
set(_link shared)
|
|
||||||
else()
|
|
||||||
set(_link static)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(_bits "")
|
|
||||||
if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
|
|
||||||
set(_bits 64)
|
|
||||||
elseif ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
|
|
||||||
set(_bits 32)
|
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
include(ProcessorCount)
|
qidistudio_add_cmake_project(Boost
|
||||||
ProcessorCount(NPROC)
|
URL "https://github.com/boostorg/boost/releases/download/boost-1.84.0/boost-1.84.0.tar.gz"
|
||||||
file(TO_NATIVE_PATH ${DESTDIR}/usr/local/ _prefix)
|
URL_HASH SHA256=4d27e9efed0f6f152dc28db6430b9d3dfb40c0345da7342eaa5a987dde57bd95
|
||||||
|
LIST_SEPARATOR |
|
||||||
set(_boost_flags "")
|
CMAKE_ARGS
|
||||||
if (UNIX)
|
-DBOOST_EXCLUDE_LIBRARIES:STRING=contract|fiber|numpy|wave|test
|
||||||
set(_boost_flags "cflags=-fPIC;cxxflags=-fPIC")
|
-DBOOST_LOCALE_ENABLE_ICU:BOOL=OFF # do not link to libicu, breaks compatibility between distros
|
||||||
endif ()
|
-DBUILD_TESTING:BOOL=OFF
|
||||||
|
"${_context_abi_line}"
|
||||||
if(APPLE)
|
"${_context_arch_line}"
|
||||||
set(_boost_flags
|
|
||||||
"cflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET};"
|
|
||||||
"cxxflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET};"
|
|
||||||
"mflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET};"
|
|
||||||
"mmflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(_boost_variants "")
|
|
||||||
if(CMAKE_BUILD_TYPE)
|
|
||||||
list(APPEND CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE})
|
|
||||||
list(REMOVE_DUPLICATES CMAKE_CONFIGURATION_TYPES)
|
|
||||||
endif()
|
|
||||||
list(FIND CMAKE_CONFIGURATION_TYPES "Release" _cfg_rel)
|
|
||||||
list(FIND CMAKE_CONFIGURATION_TYPES "RelWithDebInfo" _cfg_relwdeb)
|
|
||||||
list(FIND CMAKE_CONFIGURATION_TYPES "MinSizeRel" _cfg_minsizerel)
|
|
||||||
list(FIND CMAKE_CONFIGURATION_TYPES "Debug" _cfg_deb)
|
|
||||||
|
|
||||||
if (_cfg_rel GREATER -1 OR _cfg_relwdeb GREATER -1 OR _cfg_minsizerel GREATER -1)
|
|
||||||
list(APPEND _boost_variants release)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if ( (NOT MSVC AND _cfg_deb GREATER -1) OR (MSVC AND ${DEP_DEBUG}) )
|
|
||||||
list(APPEND _boost_variants debug)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (NOT _boost_variants)
|
|
||||||
set(_boost_variants release)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(_build_cmd ${_build_cmd}
|
|
||||||
${_boost_flags}
|
|
||||||
-j${NPROC}
|
|
||||||
${_libs}
|
|
||||||
--layout=versioned
|
|
||||||
--debug-configuration
|
|
||||||
toolset=${_boost_toolset}
|
|
||||||
address-model=${_bits}
|
|
||||||
link=${_link}
|
|
||||||
threading=multi
|
|
||||||
boost.locale.icu=off
|
|
||||||
--disable-icu
|
|
||||||
${_boost_variants}
|
|
||||||
stage)
|
|
||||||
|
|
||||||
set(_install_cmd ${_build_cmd} --prefix=${_prefix} install)
|
|
||||||
|
|
||||||
list(APPEND _patch_command COMMAND git init && ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-Boost-fix.patch)
|
|
||||||
|
|
||||||
ExternalProject_Add(
|
|
||||||
dep_Boost
|
|
||||||
#URL "https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.zip"
|
|
||||||
URL "https://github.com/qidilab/boost/releases/download/1.78.0/boost_1_78_0.zip"
|
|
||||||
URL_HASH SHA256=f22143b5528e081123c3c5ed437e92f648fe69748e95fa6e2bd41484e2986cc3
|
|
||||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/Boost
|
|
||||||
CONFIGURE_COMMAND "${_bootstrap_cmd}"
|
|
||||||
PATCH_COMMAND ${_patch_command}
|
|
||||||
BUILD_COMMAND "${_build_cmd}"
|
|
||||||
BUILD_IN_SOURCE ON
|
|
||||||
INSTALL_COMMAND "${_install_cmd}"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
|
set(DEP_Boost_DEPENDS ZLIB)
|
||||||
# Patch the boost::polygon library with a custom one.
|
|
||||||
ExternalProject_Add(dep_boost_polygon
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
# GIT_REPOSITORY "https://github.com/prusa3d/polygon"
|
|
||||||
# GIT_TAG prusaslicer_gmp
|
|
||||||
URL https://github.com/prusa3d/polygon/archive/refs/heads/prusaslicer_gmp.zip
|
|
||||||
URL_HASH SHA256=abeb9710f0a7069fb9b22181ae5c56f6066002f125db210e7ffb27032aed6824
|
|
||||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/boost_polygon
|
|
||||||
DEPENDS dep_Boost
|
|
||||||
CONFIGURE_COMMAND ""
|
|
||||||
BUILD_COMMAND ""
|
|
||||||
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/dep_boost_polygon-prefix/src/dep_boost_polygon/include/boost/polygon"
|
|
||||||
"${DESTDIR}/usr/local/include/boost/polygon"
|
|
||||||
)
|
|
||||||
# Only override boost::Polygon Voronoi implementation with Vojtech's GMP hacks on 64bit platforms.
|
|
||||||
list(APPEND _dep_list "dep_boost_polygon")
|
|
||||||
endif ()
|
|
||||||
59
deps/CGAL/0001-clang19.patch
vendored
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
--- a/BGL/include/CGAL/boost/graph/iterator.h 2022-10-07 19:04:41 UTC
|
||||||
|
+++ b/BGL/include/CGAL/boost/graph/iterator.h
|
||||||
|
@@ -213,18 +213,7 @@ class Halfedge_around_source_iterator { (public)
|
||||||
|
{}
|
||||||
|
|
||||||
|
#ifndef DOXYGEN_RUNNING
|
||||||
|
- // design patter: "safe bool"
|
||||||
|
- // will be replaced by explicit operator bool with C++11
|
||||||
|
- typedef void (Halfedge_around_source_iterator::*bool_type)() const;
|
||||||
|
|
||||||
|
- void this_type_does_not_support_comparisons() const {}
|
||||||
|
-
|
||||||
|
- operator bool_type() const
|
||||||
|
- {
|
||||||
|
- return (! (this->base() == nullptr)) ?
|
||||||
|
- &Halfedge_around_source_iterator::this_type_does_not_support_comparisons : 0;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
bool operator==( const Self& i) const {
|
||||||
|
CGAL_assertion( anchor == anchor);
|
||||||
|
return ( g == i.g) && ( pos == i.pos) && ( winding == i.winding);
|
||||||
|
@@ -313,18 +302,7 @@ class Halfedge_around_target_iterator { (public)
|
||||||
|
{}
|
||||||
|
|
||||||
|
#ifndef DOXYGEN_RUNNING
|
||||||
|
- // design patter: "safe bool"
|
||||||
|
- // will be replaced by explicit operator bool with C++11
|
||||||
|
- typedef void (Halfedge_around_target_iterator::*bool_type)() const;
|
||||||
|
|
||||||
|
- void this_type_does_not_support_comparisons() const {}
|
||||||
|
-
|
||||||
|
- operator bool_type() const
|
||||||
|
- {
|
||||||
|
- return (! (this->base() == nullptr)) ?
|
||||||
|
- &Halfedge_around_target_iterator::this_type_does_not_support_comparisons : 0;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
bool operator==( const Self& i) const {
|
||||||
|
CGAL_assertion( anchor == anchor);
|
||||||
|
return ( g == i.g) && ( pos == i.pos) && ( winding == i.winding);
|
||||||
|
@@ -411,18 +389,6 @@ class Halfedge_around_face_iterator { (public)
|
||||||
|
const value_type& operator * ( ) const { return pos; }
|
||||||
|
pointer operator -> ( ) { return &pos; }
|
||||||
|
const value_type* operator -> ( ) const { return &pos; }
|
||||||
|
-
|
||||||
|
- // design patter: "safe bool"
|
||||||
|
- // will be replaced by explicit operator bool with C++11
|
||||||
|
- typedef void (Halfedge_around_face_iterator::*bool_type)() const;
|
||||||
|
-
|
||||||
|
- void this_type_does_not_support_comparisons() const {}
|
||||||
|
-
|
||||||
|
- operator bool_type() const
|
||||||
|
- {
|
||||||
|
- return (! (this->base() == nullptr)) ?
|
||||||
|
- &Halfedge_around_face_iterator::this_type_does_not_support_comparisons : 0;
|
||||||
|
- }
|
||||||
|
|
||||||
|
bool operator==( const Self& i) const {
|
||||||
|
CGAL_assertion( anchor == anchor);
|
||||||
3
deps/CGAL/CGAL.cmake
vendored
@@ -1,8 +1,5 @@
|
|||||||
qidistudio_add_cmake_project(
|
qidistudio_add_cmake_project(
|
||||||
CGAL
|
CGAL
|
||||||
# GIT_REPOSITORY https://github.com/CGAL/cgal.git
|
|
||||||
# GIT_TAG caacd806dc55c61cc68adaad99f2240f00493b29 # releases/CGAL-5.3
|
|
||||||
# For whatever reason, this keeps downloading forever (repeats downloads if finished)
|
|
||||||
URL https://github.com/CGAL/cgal/archive/refs/tags/v5.4.zip
|
URL https://github.com/CGAL/cgal/archive/refs/tags/v5.4.zip
|
||||||
URL_HASH SHA256=d7605e0a5a5ca17da7547592f6f6e4a59430a0bc861948974254d0de43eab4c0
|
URL_HASH SHA256=d7605e0a5a5ca17da7547592f6f6e4a59430a0bc861948974254d0de43eab4c0
|
||||||
DEPENDS ${BOOST_PKG} dep_GMP dep_MPFR
|
DEPENDS ${BOOST_PKG} dep_GMP dep_MPFR
|
||||||
|
|||||||
40
deps/CMakeLists.txt
vendored
@@ -27,6 +27,9 @@ include(ExternalProject)
|
|||||||
include(ProcessorCount)
|
include(ProcessorCount)
|
||||||
|
|
||||||
ProcessorCount(NPROC)
|
ProcessorCount(NPROC)
|
||||||
|
if(DEFINED ENV{CMAKE_BUILD_PARALLEL_LEVEL})
|
||||||
|
set(NPROC $ENV{CMAKE_BUILD_PARALLEL_LEVEL})
|
||||||
|
endif()
|
||||||
if (NPROC EQUAL 0)
|
if (NPROC EQUAL 0)
|
||||||
set(NPROC 1)
|
set(NPROC 1)
|
||||||
endif ()
|
endif ()
|
||||||
@@ -39,6 +42,7 @@ option(DEP_BUILD_OPENSSL "Compile openssl" ON)
|
|||||||
option(DEP_BUILD_GLFW "Compile GLFW" ON)
|
option(DEP_BUILD_GLFW "Compile GLFW" ON)
|
||||||
option(DEP_BUILD_FREETYPE "Compile freetype" ON)
|
option(DEP_BUILD_FREETYPE "Compile freetype" ON)
|
||||||
option(DEP_BUILD_WXWIDGETS "Compile wxWidgets" ON)
|
option(DEP_BUILD_WXWIDGETS "Compile wxWidgets" ON)
|
||||||
|
option(DEP_BUILD_FFMPEG "Compile ffmpeg" ON)
|
||||||
|
|
||||||
set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory")
|
set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory")
|
||||||
set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH "Path for downloaded source packages.")
|
set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH "Path for downloaded source packages.")
|
||||||
@@ -49,6 +53,24 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|||||||
option(DEP_WX_GTK3 "Build wxWidgets against GTK3" OFF)
|
option(DEP_WX_GTK3 "Build wxWidgets against GTK3" OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(IS_CROSS_COMPILE FALSE)
|
||||||
|
|
||||||
|
if (APPLE)
|
||||||
|
set(CMAKE_FIND_FRAMEWORK LAST)
|
||||||
|
set(CMAKE_FIND_APPBUNDLE LAST)
|
||||||
|
list(FIND CMAKE_OSX_ARCHITECTURES ${CMAKE_SYSTEM_PROCESSOR} _arch_idx)
|
||||||
|
message(STATUS "qidistudio_add_cmake_project for Apple")
|
||||||
|
if (CMAKE_OSX_ARCHITECTURES AND _arch_idx LESS 0)
|
||||||
|
message(STATUS "qidistudio_add_cmake_project for Apple crosscompiling")
|
||||||
|
set(IS_CROSS_COMPILE TRUE)
|
||||||
|
set(CMAKE_CXX_COMPILER_ID "Clang")
|
||||||
|
string(REPLACE ";" "$<SEMICOLON>" CMAKE_OSX_ARCHS "${CMAKE_OSX_ARCHITECTURES}")
|
||||||
|
set(_cmake_osx_arch -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHS})
|
||||||
|
set(_cmake_args_osx_arch CMAKE_ARGS -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHS})
|
||||||
|
message(STATUS "Detect Cross-compilation. Will build for target ${CMAKE_OSX_ARCHS}" )
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
# On developer machines, it can be enabled to speed up compilation and suppress warnings coming from IGL.
|
# On developer machines, it can be enabled to speed up compilation and suppress warnings coming from IGL.
|
||||||
# FIXME:
|
# FIXME:
|
||||||
# Enabling this option is not safe. IGL will compile itself with its own version of Eigen while
|
# Enabling this option is not safe. IGL will compile itself with its own version of Eigen while
|
||||||
@@ -71,6 +93,17 @@ if (NOT _is_multi AND NOT CMAKE_BUILD_TYPE)
|
|||||||
message(STATUS "Forcing CMAKE_BUILD_TYPE to Release as it was not specified.")
|
message(STATUS "Forcing CMAKE_BUILD_TYPE to Release as it was not specified.")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${GIT_EXECUTABLE} rev-parse --is-inside-work-tree
|
||||||
|
RESULT_VARIABLE REV_PARSE_RESULT
|
||||||
|
OUTPUT_VARIABLE REV_PARSE_OUTPUT
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
)
|
||||||
|
if((REV_PARSE_RESULT EQUAL 0) AND (REV_PARSE_OUTPUT STREQUAL "true"))
|
||||||
|
# Find relative path from root to source used for adjusting patch command
|
||||||
|
file(RELATIVE_PATH BINARY_DIR_REL ${CMAKE_SOURCE_DIR}/.. ${CMAKE_BINARY_DIR})
|
||||||
|
endif ()
|
||||||
|
|
||||||
function(qidistudio_add_cmake_project projectname)
|
function(qidistudio_add_cmake_project projectname)
|
||||||
cmake_parse_arguments(P_ARGS "" "INSTALL_DIR;BUILD_COMMAND;INSTALL_COMMAND" "CMAKE_ARGS" ${ARGN})
|
cmake_parse_arguments(P_ARGS "" "INSTALL_DIR;BUILD_COMMAND;INSTALL_COMMAND" "CMAKE_ARGS" ${ARGN})
|
||||||
|
|
||||||
@@ -101,6 +134,7 @@ function(qidistudio_add_cmake_project projectname)
|
|||||||
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
|
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
|
||||||
-DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}
|
-DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}
|
||||||
-DBUILD_SHARED_LIBS:BOOL=OFF
|
-DBUILD_SHARED_LIBS:BOOL=OFF
|
||||||
|
${_cmake_osx_arch}
|
||||||
"${_configs_line}"
|
"${_configs_line}"
|
||||||
${DEP_CMAKE_OPTS}
|
${DEP_CMAKE_OPTS}
|
||||||
${P_ARGS_CMAKE_ARGS}
|
${P_ARGS_CMAKE_ARGS}
|
||||||
@@ -229,6 +263,11 @@ if (DEP_BUILD_FREETYPE)
|
|||||||
endif ()
|
endif ()
|
||||||
include(OCCT/OCCT.cmake)
|
include(OCCT/OCCT.cmake)
|
||||||
include(OpenCV/OpenCV.cmake)
|
include(OpenCV/OpenCV.cmake)
|
||||||
|
set(FFMPEG_PKG "")
|
||||||
|
if (DEP_BUILD_FFMPEG)
|
||||||
|
include(FFMPEG/FFMPEG.cmake)
|
||||||
|
set(FFMPEG_PKG dep_FFMPEG)
|
||||||
|
endif ()
|
||||||
|
|
||||||
set(_dep_list
|
set(_dep_list
|
||||||
${BOOST_PKG}
|
${BOOST_PKG}
|
||||||
@@ -247,6 +286,7 @@ set(_dep_list
|
|||||||
${ZLIB_PKG}
|
${ZLIB_PKG}
|
||||||
${EXPAT_PKG}
|
${EXPAT_PKG}
|
||||||
${FREETYPE_PKG}
|
${FREETYPE_PKG}
|
||||||
|
${FFMPEG_PKG}
|
||||||
)
|
)
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
|
|||||||
86
deps/FFMPEG/FFMPEG.cmake
vendored
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
set(_conf_cmd ./configure)
|
||||||
|
|
||||||
|
if (MSVC)
|
||||||
|
set(_dstdir ${DESTDIR}/usr/local)
|
||||||
|
set(_source_dir "${CMAKE_BINARY_DIR}/dep_FFMPEG-prefix/src/dep_FFMPEG")
|
||||||
|
ExternalProject_Add(dep_FFMPEG
|
||||||
|
URL https://github.com/bambulab/ffmpeg_prebuilts/releases/download/7.0.2/7.0.2_msvc.zip
|
||||||
|
URL_HASH SHA256=DF44AE6B97CE84C720695AE7F151B4A9654915D1841C68F10D62A1189E0E7181
|
||||||
|
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/FFMPEG
|
||||||
|
CONFIGURE_COMMAND ""
|
||||||
|
BUILD_COMMAND ""
|
||||||
|
INSTALL_COMMAND
|
||||||
|
# COMMAND ${CMAKE_COMMAND} -E make_directory "${_dstdir}/bin"
|
||||||
|
# COMMAND ${CMAKE_COMMAND} -E make_directory "${_dstdir}/lib"
|
||||||
|
# COMMAND ${CMAKE_COMMAND} -E make_directory "${_dstdir}/include"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_directory "${_source_dir}/bin" "${_dstdir}/bin"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_directory "${_source_dir}/lib" "${_dstdir}/lib"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_directory "${_source_dir}/include" "${_dstdir}/include"
|
||||||
|
)
|
||||||
|
|
||||||
|
else ()
|
||||||
|
set(_extra_cmd "--pkg-config-flags=\"--static\"")
|
||||||
|
string(APPEND _extra_cmd "--extra-cflags=\"-I ${DESTDIR}/usr/local/include\"")
|
||||||
|
string(APPEND _extra_cmd "--extra-ldflags=\"-I ${DESTDIR}/usr/local/lib\"")
|
||||||
|
string(APPEND _extra_cmd "--extra-libs=\"-lpthread -lm\"")
|
||||||
|
string(APPEND _extra_cmd "--ld=\"g++\"")
|
||||||
|
string(APPEND _extra_cmd "--bindir=\"${DESTDIR}/usr/local/bin\"")
|
||||||
|
string(APPEND _extra_cmd "--enable-gpl")
|
||||||
|
string(APPEND _extra_cmd "--enable-nonfree")
|
||||||
|
|
||||||
|
if (APPLE)
|
||||||
|
set(_minos_cmd
|
||||||
|
"CFLAGS=-mmacosx-version-min=${DEP_OSX_TARGET}"
|
||||||
|
"LDFLAGS=-mmacosx-version-min=${DEP_OSX_TARGET}"
|
||||||
|
)
|
||||||
|
if (IS_CROSS_COMPILE)
|
||||||
|
set(_cross_cmd --enable-cross-compile)
|
||||||
|
set(_pic_cmd --enable-pic)
|
||||||
|
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64")
|
||||||
|
set(_arch_cmd --arch=arm64)
|
||||||
|
set(_cc_cmd "--cc=clang -arch arm64")
|
||||||
|
else()
|
||||||
|
set(_arch_cmd --arch=x86_64)
|
||||||
|
set(_cc_cmd "--cc=clang -arch x86_64")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(_build_j -j)
|
||||||
|
if(DEFINED ENV{CMAKE_BUILD_PARALLEL_LEVEL})
|
||||||
|
set(_build_j "-j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
ExternalProject_Add(dep_FFMPEG
|
||||||
|
URL https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n7.0.2.tar.gz
|
||||||
|
URL_HASH SHA256=5EB46D18D664A0CCADF7B0ADEE03BD3B7FA72893D667F36C69E202A807E6D533
|
||||||
|
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/FFMPEG
|
||||||
|
CONFIGURE_COMMAND ${_conf_cmd}
|
||||||
|
${_cross_cmd}
|
||||||
|
${_pic_cmd}
|
||||||
|
${_arch_cmd}
|
||||||
|
${_cc_cmd}
|
||||||
|
--prefix="${DESTDIR}/usr/local"
|
||||||
|
--enable-shared
|
||||||
|
--disable-doc
|
||||||
|
--enable-small
|
||||||
|
--disable-outdevs
|
||||||
|
--disable-filters
|
||||||
|
--enable-filter=*null*,afade,*fifo,*format,*resample,aeval,allrgb,allyuv,atempo,pan,*bars,color,*key,crop,draw*,eq*,framerate,*_qsv,*_vaapi,*v4l2*,hw*,scale,volume,test*
|
||||||
|
--disable-protocols
|
||||||
|
--enable-protocol=file,fd,pipe,rtp,udp
|
||||||
|
--disable-muxers
|
||||||
|
--enable-muxer=rtp
|
||||||
|
--disable-encoders
|
||||||
|
--disable-decoders
|
||||||
|
--enable-decoder=*aac*,h264*,mp3*,mjpeg,rv*
|
||||||
|
--disable-demuxers
|
||||||
|
--enable-demuxer=h264,mp3,mov
|
||||||
|
--disable-zlib
|
||||||
|
--disable-avdevice
|
||||||
|
BUILD_IN_SOURCE ON
|
||||||
|
BUILD_COMMAND make ${_build_j}
|
||||||
|
INSTALL_COMMAND make install
|
||||||
|
)
|
||||||
|
|
||||||
|
endif()
|
||||||
9
deps/GLEW/glew/CMakeLists.txt
vendored
@@ -3,9 +3,12 @@ project(GLEW)
|
|||||||
|
|
||||||
find_package(OpenGL REQUIRED)
|
find_package(OpenGL REQUIRED)
|
||||||
|
|
||||||
if(OpenGL_EGL_FOUND)
|
# we do not support wayland for now
|
||||||
message(STATUS "building GLEW for EGL (hope that wxWidgets agrees, otherwise you won't have any output!)")
|
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DGLEW_EGL")
|
if(OpenGL_EGL_FOUND)
|
||||||
|
message(STATUS "building GLEW for EGL (hope that wxWidgets agrees, otherwise you won't have any output!)")
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DGLEW_EGL")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(GLEW src/glew.c)
|
add_library(GLEW src/glew.c)
|
||||||
|
|||||||
22
deps/GMP/GMP.cmake
vendored
@@ -22,10 +22,24 @@ else ()
|
|||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
|
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
|
||||||
set(_gmp_build_tgt aarch64)
|
set(_gmp_build_arch aarch64)
|
||||||
|
else ()
|
||||||
|
set(_gmp_build_arch ${CMAKE_SYSTEM_PROCESSOR})
|
||||||
|
endif()
|
||||||
|
if (IS_CROSS_COMPILE)
|
||||||
|
if (${CMAKE_OSX_ARCHITECTURES} MATCHES "arm")
|
||||||
|
set(_gmp_host_arch aarch64)
|
||||||
|
set(_gmp_host_arch_flags "-arch arm64")
|
||||||
|
elseif (${CMAKE_OSX_ARCHITECTURES} MATCHES "x86_64")
|
||||||
|
set(_gmp_host_arch x86_64)
|
||||||
|
set(_gmp_host_arch_flags "-arch x86_64")
|
||||||
|
endif()
|
||||||
|
set(_gmp_ccflags "${_gmp_ccflags} ${_gmp_host_arch_flags} -mmacosx-version-min=${DEP_OSX_TARGET}")
|
||||||
|
set(_gmp_build_tgt --build=${_gmp_build_arch}-apple-darwin --host=${_gmp_host_arch}-apple-darwin)
|
||||||
|
else ()
|
||||||
|
set(_gmp_ccflags "${_gmp_ccflags} -mmacosx-version-min=${DEP_OSX_TARGET}")
|
||||||
|
set(_gmp_build_tgt "--build=${_gmp_build_arch}-apple-darwin")
|
||||||
endif()
|
endif()
|
||||||
set(_gmp_ccflags "${_gmp_ccflags} -mmacosx-version-min=${DEP_OSX_TARGET}")
|
|
||||||
set(_gmp_build_tgt "--build=${_gmp_build_tgt}-apple-darwin")
|
|
||||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
|
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
|
||||||
set(_gmp_ccflags "${_gmp_ccflags} -march=armv7-a") # Works on RPi-4
|
set(_gmp_ccflags "${_gmp_ccflags} -march=armv7-a") # Works on RPi-4
|
||||||
@@ -43,7 +57,7 @@ else ()
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
ExternalProject_Add(dep_GMP
|
ExternalProject_Add(dep_GMP
|
||||||
URL https://github.com/qidilab/gmp/archive/refs/tags/6.2.1.tar.gz
|
URL https://github.com/bambulab/gmp/archive/refs/tags/6.2.1.tar.gz
|
||||||
URL_HASH SHA256=705ae57ee2014b2c6fc0f572c85ee43276b99b6b256ee16c1a9d3a8c4e3609d5
|
URL_HASH SHA256=705ae57ee2014b2c6fc0f572c85ee43276b99b6b256ee16c1a9d3a8c4e3609d5
|
||||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/GMP
|
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/GMP
|
||||||
BUILD_IN_SOURCE ON
|
BUILD_IN_SOURCE ON
|
||||||
|
|||||||
4
deps/JPEG/JPEG.cmake
vendored
@@ -12,8 +12,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
qidistudio_add_cmake_project(JPEG
|
qidistudio_add_cmake_project(JPEG
|
||||||
URL https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/2.0.6.zip
|
URL https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/3.0.1.zip
|
||||||
URL_HASH SHA256=017bdc33ff3a72e11301c0feb4657cb27719d7f97fa67a78ed506c594218bbf1
|
URL_HASH SHA256=d6d99e693366bc03897677650e8b2dfa76b5d6c54e2c9e70c03f0af821b0a52f
|
||||||
DEPENDS ${ZLIB_PKG}
|
DEPENDS ${ZLIB_PKG}
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
-DENABLE_SHARED=OFF
|
-DENABLE_SHARED=OFF
|
||||||
|
|||||||
24
deps/OCCT/0001-OCCT-fix.patch
vendored
@@ -195,3 +195,27 @@ index 5ae9899f..0a17372b 100644
|
|||||||
|
|
||||||
if (!myFTLib->IsValid())
|
if (!myFTLib->IsValid())
|
||||||
{
|
{
|
||||||
|
From 7236e83dcc1e7284e66dc61e612154617ef715d6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: dpasukhi <dpasukhi@opencascade.com>
|
||||||
|
Date: Tue, 27 Aug 2024 11:33:29 +0100
|
||||||
|
Subject: [PATCH] 0033808: Coding - FreeType Use unsigned point and contour
|
||||||
|
indexing in `FT_Outline`
|
||||||
|
|
||||||
|
Changes to auto instead of specific type
|
||||||
|
---
|
||||||
|
src/StdPrs/StdPrs_BRepFont.cxx | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/StdPrs/StdPrs_BRepFont.cxx b/src/StdPrs/StdPrs_BRepFont.cxx
|
||||||
|
index ab2d9b3c9f..cd701879b1 100644
|
||||||
|
--- a/src/StdPrs/StdPrs_BRepFont.cxx
|
||||||
|
+++ b/src/StdPrs/StdPrs_BRepFont.cxx
|
||||||
|
@@ -457,7 +457,7 @@ Standard_Boolean StdPrs_BRepFont::renderGlyph (const Standard_Utf32Char theChar,
|
||||||
|
for (short aContour = 0, aStartIndex = 0; aContour < anOutline->n_contours; ++aContour)
|
||||||
|
{
|
||||||
|
const FT_Vector* aPntList = &anOutline->points[aStartIndex];
|
||||||
|
- const char* aTags = &anOutline->tags[aStartIndex];
|
||||||
|
+ const auto* aTags = &anOutline->tags[aStartIndex];
|
||||||
|
const short anEndIndex = anOutline->contours[aContour];
|
||||||
|
const short aPntsNb = (anEndIndex - aStartIndex) + 1;
|
||||||
|
aStartIndex = anEndIndex + 1;
|
||||||
|
|||||||
7
deps/OCCT/OCCT.cmake
vendored
@@ -4,11 +4,14 @@ else()
|
|||||||
set(library_build_type "Static")
|
set(library_build_type "Static")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (BINARY_DIR_REL)
|
||||||
|
set(OCCT_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_OCCT-prefix/src/dep_OCCT)
|
||||||
|
endif ()
|
||||||
|
|
||||||
qidistudio_add_cmake_project(OCCT
|
qidistudio_add_cmake_project(OCCT
|
||||||
URL https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_0.zip
|
URL https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_0.zip
|
||||||
URL_HASH SHA256=28334f0e98f1b1629799783e9b4d21e05349d89e695809d7e6dfa45ea43e1dbc
|
URL_HASH SHA256=28334f0e98f1b1629799783e9b4d21e05349d89e695809d7e6dfa45ea43e1dbc
|
||||||
#PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch
|
PATCH_COMMAND git apply ${OCCT_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch
|
||||||
PATCH_COMMAND ${GIT_EXECUTABLE} apply --directory deps/build/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_Boost
|
||||||
#DEPENDS dep_FREETYPE
|
#DEPENDS dep_FREETYPE
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
|
|||||||
24
deps/OpenCV/0002-clang19-macos.patch
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
diff --git a/3rdparty/libpng/pngpriv.h b/3rdparty/libpng/pngpriv.h
|
||||||
|
index 583c26f..83e0ab8 100644
|
||||||
|
--- a/3rdparty/libpng/pngpriv.h
|
||||||
|
+++ b/3rdparty/libpng/pngpriv.h
|
||||||
|
@@ -517,18 +517,7 @@
|
||||||
|
*/
|
||||||
|
# include <float.h>
|
||||||
|
|
||||||
|
-# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \
|
||||||
|
- defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC)
|
||||||
|
- /* We need to check that <math.h> hasn't already been included earlier
|
||||||
|
- * as it seems it doesn't agree with <fp.h>, yet we should really use
|
||||||
|
- * <fp.h> if possible.
|
||||||
|
- */
|
||||||
|
-# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__)
|
||||||
|
-# include <fp.h>
|
||||||
|
-# endif
|
||||||
|
-# else
|
||||||
|
-# include <math.h>
|
||||||
|
-# endif
|
||||||
|
+# include <math.h>
|
||||||
|
# if defined(_AMIGA) && defined(__SASC) && defined(_M68881)
|
||||||
|
/* Amiga SAS/C: We must include builtin FPU functions when compiling using
|
||||||
|
* MATH=68881
|
||||||
6
deps/OpenCV/OpenCV.cmake
vendored
@@ -4,10 +4,14 @@ else ()
|
|||||||
set(_use_IPP "-DWITH_IPP=OFF")
|
set(_use_IPP "-DWITH_IPP=OFF")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if (BINARY_DIR_REL)
|
||||||
|
set(OpenCV_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_OpenCV-prefix/src/dep_OpenCV)
|
||||||
|
endif ()
|
||||||
|
|
||||||
qidistudio_add_cmake_project(OpenCV
|
qidistudio_add_cmake_project(OpenCV
|
||||||
URL https://github.com/opencv/opencv/archive/refs/tags/4.6.0.tar.gz
|
URL https://github.com/opencv/opencv/archive/refs/tags/4.6.0.tar.gz
|
||||||
URL_HASH SHA256=1ec1cba65f9f20fe5a41fda1586e01c70ea0c9a6d7b67c9e13edf0cfe2239277
|
URL_HASH SHA256=1ec1cba65f9f20fe5a41fda1586e01c70ea0c9a6d7b67c9e13edf0cfe2239277
|
||||||
PATCH_COMMAND ${GIT_EXECUTABLE} apply --directory deps/build/dep_OpenCV-prefix/src/dep_OpenCV --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OpenCV-fix.patch
|
PATCH_COMMAND git apply ${OpenCV_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OpenCV-fix.patch ${CMAKE_CURRENT_LIST_DIR}/0002-clang19-macos.patch
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
-DBUILD_SHARED_LIBS=0
|
-DBUILD_SHARED_LIBS=0
|
||||||
-DBUILD_PERE_TESTS=OFF
|
-DBUILD_PERE_TESTS=OFF
|
||||||
|
|||||||
31
deps/OpenEXR/OpenEXR.cmake
vendored
@@ -1,3 +1,32 @@
|
|||||||
|
if (APPLE AND IS_CROSS_COMPILE)
|
||||||
|
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64" AND ${CMAKE_OSX_ARCHITECTURES} MATCHES "arm")
|
||||||
|
set(_openexr_arch arm64^^x86_64)
|
||||||
|
set(_openxr_list_sep LIST_SEPARATOR ^^)
|
||||||
|
set(_cmake_openexr_arch -DCMAKE_OSX_ARCHITECTURES:STRING=${_openexr_arch})
|
||||||
|
else()
|
||||||
|
set(_openexr_arch ${CMAKE_OSX_ARCHITECTURES})
|
||||||
|
set(_cmake_openexr_arch -DCMAKE_OSX_ARCHITECTURES:STRING=${_openexr_arch})
|
||||||
|
endif()
|
||||||
|
ExternalProject_Add(dep_OpenEXR
|
||||||
|
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
|
||||||
|
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/OpenEXR
|
||||||
|
${_openxr_list_sep}
|
||||||
|
CMAKE_ARGS
|
||||||
|
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}/usr/local
|
||||||
|
-DBUILD_SHARED_LIBS:BOOL=OFF
|
||||||
|
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
||||||
|
-DBUILD_TESTING=OFF
|
||||||
|
-DPYILMBASE_ENABLE:BOOL=OFF
|
||||||
|
-DOPENEXR_VIEWERS_ENABLE:BOOL=OFF
|
||||||
|
-DOPENEXR_BUILD_UTILS:BOOL=OFF
|
||||||
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${DEP_OSX_TARGET}
|
||||||
|
${_cmake_openexr_arch}
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
set(_patch_cmd ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OpenEXR-GCC13.patch)
|
set(_patch_cmd ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OpenEXR-GCC13.patch)
|
||||||
else()
|
else()
|
||||||
@@ -18,7 +47,7 @@ qidistudio_add_cmake_project(OpenEXR
|
|||||||
-DOPENEXR_VIEWERS_ENABLE:BOOL=OFF
|
-DOPENEXR_VIEWERS_ENABLE:BOOL=OFF
|
||||||
-DOPENEXR_BUILD_UTILS:BOOL=OFF
|
-DOPENEXR_BUILD_UTILS:BOOL=OFF
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
add_debug_dep(dep_OpenEXR)
|
add_debug_dep(dep_OpenEXR)
|
||||||
endif ()
|
endif ()
|
||||||
|
|||||||
2
deps/OpenSSL/OpenSSL.cmake
vendored
@@ -19,7 +19,7 @@ if(WIN32)
|
|||||||
set(_install_cmd nmake install_sw )
|
set(_install_cmd nmake install_sw )
|
||||||
else()
|
else()
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set(_conf_cmd ./Configure )
|
set(_conf_cmd export MACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} && ./Configure -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET} )
|
||||||
else()
|
else()
|
||||||
set(_conf_cmd "./config")
|
set(_conf_cmd "./config")
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
31
deps/OpenVDB/0001-clang19.patch
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
diff --git a/openvdb/openvdb/tree/NodeManager.h b/openvdb/openvdb/tree/NodeManager.h
|
||||||
|
index 4d0d9b4..12dabaa 100644
|
||||||
|
--- a/openvdb/openvdb/tree/NodeManager.h
|
||||||
|
+++ b/openvdb/openvdb/tree/NodeManager.h
|
||||||
|
@@ -327,7 +327,7 @@ private:
|
||||||
|
void operator()(const NodeRange& range) const
|
||||||
|
{
|
||||||
|
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
||||||
|
- OpT::template eval(mNodeOp, it);
|
||||||
|
+ OpT::eval(mNodeOp, it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const NodeOp mNodeOp;
|
||||||
|
@@ -347,7 +347,7 @@ private:
|
||||||
|
void operator()(const NodeRange& range) const
|
||||||
|
{
|
||||||
|
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
||||||
|
- OpT::template eval(mNodeOp, it);
|
||||||
|
+ OpT::eval(mNodeOp, it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const NodeOp& mNodeOp;
|
||||||
|
@@ -372,7 +372,7 @@ private:
|
||||||
|
void operator()(const NodeRange& range)
|
||||||
|
{
|
||||||
|
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
||||||
|
- OpT::template eval(*mNodeOp, it);
|
||||||
|
+ OpT::eval(*mNodeOp, it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void join(const NodeReducer& other)
|
||||||
5
deps/OpenVDB/OpenVDB.cmake
vendored
@@ -6,6 +6,10 @@ else()
|
|||||||
set(_build_static ON)
|
set(_build_static ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (BINARY_DIR_REL)
|
||||||
|
set(OPENVDB_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_OpenVDB-prefix/src/dep_OpenVDB)
|
||||||
|
endif ()
|
||||||
|
|
||||||
set (_openvdb_vdbprint ON)
|
set (_openvdb_vdbprint ON)
|
||||||
#if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
|
#if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
|
||||||
# Build fails on raspberry pi due to missing link directive to latomic
|
# Build fails on raspberry pi due to missing link directive to latomic
|
||||||
@@ -15,6 +19,7 @@ set (_openvdb_vdbprint ON)
|
|||||||
qidistudio_add_cmake_project(OpenVDB
|
qidistudio_add_cmake_project(OpenVDB
|
||||||
URL https://github.com/tamasmeszaros/openvdb/archive/a68fd58d0e2b85f01adeb8b13d7555183ab10aa5.zip # 8.2 patched
|
URL https://github.com/tamasmeszaros/openvdb/archive/a68fd58d0e2b85f01adeb8b13d7555183ab10aa5.zip # 8.2 patched
|
||||||
URL_HASH SHA256=f353e7b99bd0cbfc27ac9082de51acf32a8bc0b3e21ff9661ecca6f205ec1d81
|
URL_HASH SHA256=f353e7b99bd0cbfc27ac9082de51acf32a8bc0b3e21ff9661ecca6f205ec1d81
|
||||||
|
PATCH_COMMAND git apply ${OPENVDB_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-clang19.patch
|
||||||
# URL https://github.com/AcademySoftwareFoundation/openvdb/archive/refs/tags/v10.0.1.zip
|
# URL https://github.com/AcademySoftwareFoundation/openvdb/archive/refs/tags/v10.0.1.zip
|
||||||
# URL_HASH SHA256=48C2CFA9853B58FA86282DF1F83F0E99D07858CC03EB2BA8227DC447A830100A
|
# URL_HASH SHA256=48C2CFA9853B58FA86282DF1F83F0E99D07858CC03EB2BA8227DC447A830100A
|
||||||
DEPENDS dep_TBB dep_Blosc dep_OpenEXR ${BOOST_PKG}
|
DEPENDS dep_TBB dep_Blosc dep_OpenEXR ${BOOST_PKG}
|
||||||
|
|||||||
29
deps/PNG/0002-clang19-macos.patch
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
--- a/pngpriv.h 2025-04-20 19:36:04.000000000
|
||||||
|
+++ b/pngpriv.h 2025-04-20 19:35:55.000000000
|
||||||
|
@@ -511,24 +511,14 @@
|
||||||
|
* DBL_DIG Maximum number of decimal digits (can be set to any constant)
|
||||||
|
* DBL_MIN Smallest normalized fp number (can be set to an arbitrary value)
|
||||||
|
* DBL_MAX Maximum floating point number (can be set to an arbitrary value)
|
||||||
|
*/
|
||||||
|
# include <float.h>
|
||||||
|
|
||||||
|
-# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \
|
||||||
|
- defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC)
|
||||||
|
- /* We need to check that <math.h> hasn't already been included earlier
|
||||||
|
- * as it seems it doesn't agree with <fp.h>, yet we should really use
|
||||||
|
- * <fp.h> if possible.
|
||||||
|
- */
|
||||||
|
-# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__)
|
||||||
|
-# include <fp.h>
|
||||||
|
-# endif
|
||||||
|
-# else
|
||||||
|
-# include <math.h>
|
||||||
|
-# endif
|
||||||
|
+# include <math.h>
|
||||||
|
+
|
||||||
|
# if defined(_AMIGA) && defined(__SASC) && defined(_M68881)
|
||||||
|
/* Amiga SAS/C: We must include builtin FPU functions when compiling using
|
||||||
|
* MATH=68881
|
||||||
|
*/
|
||||||
|
# include <m68881.h>
|
||||||
|
# endif
|
||||||
53
deps/PNG/PNG.cmake
vendored
@@ -5,26 +5,43 @@ else ()
|
|||||||
set(_disable_neon_extension "")
|
set(_disable_neon_extension "")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if(APPLE AND IS_CROSS_COMPILE)
|
||||||
|
# TODO: check if it doesn't create problem when compiling from arm to x86_64
|
||||||
|
qidistudio_add_cmake_project(PNG
|
||||||
|
GIT_REPOSITORY https://github.com/glennrp/libpng.git
|
||||||
|
GIT_TAG v1.6.35
|
||||||
|
DEPENDS ${ZLIB_PKG}
|
||||||
|
PATCH_COMMAND ${GIT_EXECUTABLE} checkout -f -- . && git clean -df &&
|
||||||
|
${GIT_EXECUTABLE} apply --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/macos-arm64.patch ${CMAKE_CURRENT_LIST_DIR}/0002-clang19-macos.patch
|
||||||
|
CMAKE_ARGS
|
||||||
|
-DPNG_SHARED=OFF
|
||||||
|
-DPNG_STATIC=ON
|
||||||
|
-DPNG_PREFIX=prusaslicer_
|
||||||
|
-DPNG_TESTS=OFF
|
||||||
|
-DDISABLE_DEPENDENCY_TRACKING=OFF
|
||||||
|
${_disable_neon_extension}
|
||||||
|
)
|
||||||
|
else ()
|
||||||
set(_patch_step "")
|
set(_patch_step "")
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
set(_patch_step PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/PNG.patch)
|
set(_patch_step PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/PNG.patch ${CMAKE_CURRENT_LIST_DIR}/0002-clang19-macos.patch)
|
||||||
endif ()
|
endif ()
|
||||||
|
qidistudio_add_cmake_project(PNG
|
||||||
qidistudio_add_cmake_project(PNG
|
# GIT_REPOSITORY https://github.com/glennrp/libpng.git
|
||||||
# GIT_REPOSITORY https://github.com/glennrp/libpng.git
|
# GIT_TAG v1.6.35
|
||||||
# GIT_TAG v1.6.35
|
URL https://github.com/glennrp/libpng/archive/refs/tags/v1.6.35.zip
|
||||||
URL https://github.com/glennrp/libpng/archive/refs/tags/v1.6.35.zip
|
URL_HASH SHA256=3d22d46c566b1761a0e15ea397589b3a5f36ac09b7c785382e6470156c04247f
|
||||||
URL_HASH SHA256=3d22d46c566b1761a0e15ea397589b3a5f36ac09b7c785382e6470156c04247f
|
DEPENDS ${ZLIB_PKG}
|
||||||
DEPENDS ${ZLIB_PKG}
|
"${_patch_step}"
|
||||||
"${_patch_step}"
|
CMAKE_ARGS
|
||||||
CMAKE_ARGS
|
-DPNG_SHARED=OFF
|
||||||
-DPNG_SHARED=OFF
|
-DPNG_STATIC=ON
|
||||||
-DPNG_STATIC=ON
|
-DPNG_PREFIX=prusaslicer_
|
||||||
-DPNG_PREFIX=prusaslicer_
|
-DPNG_TESTS=OFF
|
||||||
-DPNG_TESTS=OFF
|
-DDISABLE_DEPENDENCY_TRACKING=OFF
|
||||||
-DDISABLE_DEPENDENCY_TRACKING=OFF
|
${_disable_neon_extension}
|
||||||
${_disable_neon_extension}
|
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
add_debug_dep(dep_PNG)
|
add_debug_dep(dep_PNG)
|
||||||
|
|||||||
90
deps/PNG/macos-arm64.patch
vendored
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
Based on https://github.com/vespakoen/libpng to work around until
|
||||||
|
https://github.com/glennrp/libpng/pull/354 is resolved.
|
||||||
|
also added patch from PS2.4 (PNG.pach) in pngrutil.c
|
||||||
|
---
|
||||||
|
CMakeLists.txt | 28 ++++++++++++++++++++--------
|
||||||
|
pngrutil.c | 7 -------
|
||||||
|
2 files changed, 20 insertions(+), 15 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 4db9bb87d..9099d1edf 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -82,10 +82,22 @@ option(PNG_HARDWARE_OPTIMIZATIONS "Enable Hardware Optimizations" ON)
|
||||||
|
set(PNG_PREFIX "" CACHE STRING "Prefix to add to the API function names")
|
||||||
|
set(DFA_XTRA "" CACHE FILEPATH "File containing extra configuration settings")
|
||||||
|
|
||||||
|
+# CMake currently sets CMAKE_SYSTEM_PROCESSOR to one of x86_64 or arm64 on macOS,
|
||||||
|
+# based upon the OS architecture, not the target architecture. As such, we need
|
||||||
|
+# to check CMAKE_OSX_ARCHITECTURES to identify which hardware-specific flags to
|
||||||
|
+# enable. Note that this will fail if you attempt to build a universal binary in
|
||||||
|
+# a single cmake invokation.
|
||||||
|
+if (APPLE AND CMAKE_OSX_ARCHITECTURES)
|
||||||
|
+ set(TARGET_ARCH ${CMAKE_OSX_ARCHITECTURES})
|
||||||
|
+else()
|
||||||
|
+ set(TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR})
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
+
|
||||||
|
if(PNG_HARDWARE_OPTIMIZATIONS)
|
||||||
|
# set definitions and sources for arm
|
||||||
|
-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR
|
||||||
|
- CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
|
||||||
|
+if(TARGET_ARCH MATCHES "^arm" OR
|
||||||
|
+ TARGET_ARCH MATCHES "^aarch64")
|
||||||
|
set(PNG_ARM_NEON_POSSIBLE_VALUES check on off)
|
||||||
|
set(PNG_ARM_NEON "check" CACHE STRING "Enable ARM NEON optimizations:
|
||||||
|
check: (default) use internal checking code;
|
||||||
|
@@ -114,8 +126,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# set definitions and sources for powerpc
|
||||||
|
-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR
|
||||||
|
- CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64*" )
|
||||||
|
+if(TARGET_ARCH MATCHES "^powerpc*" OR
|
||||||
|
+ TARGET_ARCH MATCHES "^ppc64*" )
|
||||||
|
set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off)
|
||||||
|
set(PNG_POWERPC_VSX "on" CACHE STRING "Enable POWERPC VSX optimizations:
|
||||||
|
off: disable the optimizations.")
|
||||||
|
@@ -138,8 +150,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# set definitions and sources for intel
|
||||||
|
-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR
|
||||||
|
- CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64*" )
|
||||||
|
+if(TARGET_ARCH MATCHES "^i?86" OR
|
||||||
|
+ TARGET_ARCH MATCHES "^x86_64*" )
|
||||||
|
set(PNG_INTEL_SSE_POSSIBLE_VALUES on off)
|
||||||
|
set(PNG_INTEL_SSE "on" CACHE STRING "Enable INTEL_SSE optimizations:
|
||||||
|
off: disable the optimizations")
|
||||||
|
@@ -162,8 +174,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# set definitions and sources for MIPS
|
||||||
|
-if(CMAKE_SYSTEM_PROCESSOR MATCHES "mipsel*" OR
|
||||||
|
- CMAKE_SYSTEM_PROCESSOR MATCHES "mips64el*" )
|
||||||
|
+if(TARGET_ARCH MATCHES "mipsel*" OR
|
||||||
|
+ TARGET_ARCH MATCHES "mips64el*" )
|
||||||
|
set(PNG_MIPS_MSA_POSSIBLE_VALUES on off)
|
||||||
|
set(PNG_MIPS_MSA "on" CACHE STRING "Enable MIPS_MSA optimizations:
|
||||||
|
off: disable the optimizations")
|
||||||
|
diff --git a/pngrutil.c b/pngrutil.c
|
||||||
|
index 7001f1976..91930f1f2 100644
|
||||||
|
--- a/pngrutil.c
|
||||||
|
+++ b/pngrutil.c
|
||||||
|
@@ -422,13 +422,6 @@ png_inflate_claim(png_structrp png_ptr, png_uint_32 owner)
|
||||||
|
png_ptr->flags |= PNG_FLAG_ZSTREAM_INITIALIZED;
|
||||||
|
}
|
||||||
|
|
||||||
|
-#if ZLIB_VERNUM >= 0x1290 && \
|
||||||
|
- defined(PNG_SET_OPTION_SUPPORTED) && defined(PNG_IGNORE_ADLER32)
|
||||||
|
- if (((png_ptr->options >> PNG_IGNORE_ADLER32) & 3) == PNG_OPTION_ON)
|
||||||
|
- /* Turn off validation of the ADLER32 checksum in IDAT chunks */
|
||||||
|
- ret = inflateValidate(&png_ptr->zstream, 0);
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
if (ret == Z_OK)
|
||||||
|
png_ptr->zowner = owner;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.33.0.windows.1
|
||||||
4
deps/TIFF/TIFF.cmake
vendored
@@ -1,8 +1,8 @@
|
|||||||
find_package(OpenGL QUIET REQUIRED)
|
find_package(OpenGL QUIET REQUIRED)
|
||||||
|
|
||||||
qidistudio_add_cmake_project(TIFF
|
qidistudio_add_cmake_project(TIFF
|
||||||
URL https://gitlab.com/libtiff/libtiff/-/archive/v4.1.0/libtiff-v4.1.0.zip
|
URL https://download.osgeo.org/libtiff/tiff-4.1.0.zip
|
||||||
URL_HASH SHA256=c56edfacef0a60c0de3e6489194fcb2f24c03dbb550a8a7de5938642d045bd32
|
URL_HASH SHA256=6F3DBED9D2ECFED33C7192B5C01884078970657FA21B4AD28E3CDF3438EB2419
|
||||||
DEPENDS ${ZLIB_PKG} ${PNG_PKG} ${JPEG_PKG}
|
DEPENDS ${ZLIB_PKG} ${PNG_PKG} ${JPEG_PKG}
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
-Dlzma:BOOL=OFF
|
-Dlzma:BOOL=OFF
|
||||||
|
|||||||
4
deps/wxWidgets/wxWidgets.cmake
vendored
@@ -6,8 +6,9 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|||||||
endif ()
|
endif ()
|
||||||
set(_wx_toolkit "-DwxBUILD_TOOLKIT=gtk${_gtk_ver}")
|
set(_wx_toolkit "-DwxBUILD_TOOLKIT=gtk${_gtk_ver}")
|
||||||
set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=1")
|
set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=1")
|
||||||
|
set(_wx_egl "-DwxUSE_GLCANVAS_EGL=OFF")
|
||||||
else ()
|
else ()
|
||||||
set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=0")
|
set(_wx_egl "")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
@@ -52,6 +53,7 @@ qidistudio_add_cmake_project(wxWidgets
|
|||||||
-DwxUSE_LIBJPEG=sys
|
-DwxUSE_LIBJPEG=sys
|
||||||
-DwxUSE_LIBTIFF=sys
|
-DwxUSE_LIBTIFF=sys
|
||||||
-DwxUSE_EXPAT=sys
|
-DwxUSE_EXPAT=sys
|
||||||
|
${_wx_egl}
|
||||||
)
|
)
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Full manual for GNUgettext can be seen here: http://www.gnu.org/software/gettext
|
|||||||
|
|
||||||
### Scenario 1. How do I add a translation or fix an existing translation
|
### Scenario 1. How do I add a translation or fix an existing translation
|
||||||
1. Get PO-file 'QIDIStudio_xx.pot' from corresponding sub-folder here:
|
1. Get PO-file 'QIDIStudio_xx.pot' from corresponding sub-folder here:
|
||||||
https://github.com/qidilab/QIDIStudio/tree/master/qdt/i18n
|
https://github.com/qiditech/QIDIStudio/tree/master/qdt/i18n
|
||||||
2. Open this file in PoEdit as "Edit a translation"
|
2. Open this file in PoEdit as "Edit a translation"
|
||||||
3. Apply your corrections to the translation
|
3. Apply your corrections to the translation
|
||||||
4. Push changed QIDIStudio_xx.po into the original folder
|
4. Push changed QIDIStudio_xx.po into the original folder
|
||||||
@@ -21,14 +21,14 @@ https://github.com/qidilab/QIDIStudio/tree/master/qdt/i18n
|
|||||||
|
|
||||||
### Scenario 2. How do I add a new language support
|
### Scenario 2. How do I add a new language support
|
||||||
1. Get file QIDIStudio.pot here :
|
1. Get file QIDIStudio.pot here :
|
||||||
https://github.com/qidilab/QIDIStudio/tree/master/qdt/i18n
|
https://github.com/qiditech/QIDIStudio/tree/master/qdt/i18n
|
||||||
2. Open it in PoEdit for "Create new translation"
|
2. Open it in PoEdit for "Create new translation"
|
||||||
3. Select Translation Language (for example French).
|
3. Select Translation Language (for example French).
|
||||||
4. As a result you will have fr.po - the file containing translation to French.
|
4. As a result you will have fr.po - the file containing translation to French.
|
||||||
Notice. When the translation is complete you need to:
|
Notice. When the translation is complete you need to:
|
||||||
- Rename the file to QIDIStudio_fr.po
|
- Rename the file to QIDIStudio_fr.po
|
||||||
- Click "Save file" button. QIDIStudio_fr.mo will be created immediately
|
- Click "Save file" button. QIDIStudio_fr.mo will be created immediately
|
||||||
- QIDI_Studio_fr.po needs to be copied into the sub-folder fr of https://github.com/qidilab/QIDIStudio/tree/master/qdt/i18n, and be pushed
|
- QIDI_Studio_fr.po needs to be copied into the sub-folder fr of https://github.com/qiditech/QIDIStudio/tree/master/qdt/i18n, and be pushed
|
||||||
- copy QIDIStudio_xx.mo into resources/i18n/xx and rename it to QIDIStudio.mo, then push the changed file.
|
- copy QIDIStudio_xx.mo into resources/i18n/xx and rename it to QIDIStudio.mo, then push the changed file.
|
||||||
( name of folder "fr" means "French" - the translation language).
|
( name of folder "fr" means "French" - the translation language).
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ If you add new file resource, add it to the list of files containing macro `L()`
|
|||||||
### Scenario 4. How do I use GNUgettext to localize my own application taking QIDI Studio as an example
|
### Scenario 4. How do I use GNUgettext to localize my own application taking QIDI Studio as an example
|
||||||
|
|
||||||
1. For convenience create a list of files with this macro `L(s)`. We have
|
1. For convenience create a list of files with this macro `L(s)`. We have
|
||||||
https://github.com/qidilab/QIDIStudio/blob/master/qdt/i18n/list.txt.
|
https://github.com/qiditech/QIDIStudio/blob/master/qdt/i18n/list.txt.
|
||||||
|
|
||||||
2. Create template file(*.POT) with GNUgettext command:
|
2. Create template file(*.POT) with GNUgettext command:
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -15,4 +15,4 @@
|
|||||||
7. 支持匈牙利语
|
7. 支持匈牙利语
|
||||||
8. 一些关键问题修复
|
8. 一些关键问题修复
|
||||||
|
|
||||||
详细信息请查看:https://github.com/qidilab/QIDIStudio/releases
|
详细信息请查看:https://github.com/qiditech/QIDIStudio/releases
|
||||||
|
|||||||
@@ -15,4 +15,4 @@
|
|||||||
7. Added Magyar translations
|
7. Added Magyar translations
|
||||||
8. Fixed some known bugs
|
8. Fixed some known bugs
|
||||||
|
|
||||||
For details, please check https://github.com/qidilab/QIDIStudio/releases
|
For details, please check https://github.com/qiditech/QIDIStudio/releases
|
||||||
|
|||||||
@@ -27,16 +27,20 @@ REQUIRED_DEV_PACKAGES=(
|
|||||||
libunwind-dev
|
libunwind-dev
|
||||||
libfuse2
|
libfuse2
|
||||||
texinfo
|
texinfo
|
||||||
|
nasm
|
||||||
|
yasm
|
||||||
|
libx264-dev
|
||||||
|
libbz2-dev
|
||||||
)
|
)
|
||||||
|
|
||||||
if [[ -n "$UPDATE_LIB" ]]
|
if [[ -n "$UPDATE_LIB" ]]
|
||||||
then
|
then
|
||||||
# for ubuntu 22+ and 23+:
|
# for ubuntu 22+ and 23+:
|
||||||
ubu_major_version="$(grep VERSION_ID /etc/os-release | cut -d "=" -f 2 | cut -d "." -f 1 | tr -d /\"/)"
|
ubu_major_version="$(grep VERSION_ID /etc/os-release | cut -d "=" -f 2 | cut -d "." -f 1 | tr -d /\"/)"
|
||||||
if [ $ubu_major_version == "22" ] || [ $ubu_major_version == "23" ]
|
if [ $ubu_major_version = "22" ] || [ $ubu_major_version = "23" ]
|
||||||
then
|
then
|
||||||
REQUIRED_DEV_PACKAGES+=(libwebkit2gtk-4.0-dev curl libfuse-dev libssl-dev libcurl4-openssl-dev m4)
|
REQUIRED_DEV_PACKAGES+=(libwebkit2gtk-4.0-dev curl libfuse-dev libssl-dev libcurl4-openssl-dev m4)
|
||||||
elif [ $ubu_major_version == "24" ]
|
elif [ $ubu_major_version = "24" ]
|
||||||
then
|
then
|
||||||
REQUIRED_DEV_PACKAGES+=(libwebkit2gtk-4.1-dev)
|
REQUIRED_DEV_PACKAGES+=(libwebkit2gtk-4.1-dev)
|
||||||
else
|
else
|
||||||
@@ -56,4 +60,4 @@ then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
FOUND_GTK3_DEV=$(dpkg -l libgtk* | grep gtk-3-dev || echo '')
|
FOUND_GTK3_DEV=$(dpkg -l libgtk* | grep gtk-3-dev || echo '')
|
||||||
|
|||||||
@@ -35,6 +35,10 @@ REQUIRED_DEV_PACKAGES=(
|
|||||||
wget
|
wget
|
||||||
libcurl-devel
|
libcurl-devel
|
||||||
libquadmath-devel
|
libquadmath-devel
|
||||||
|
nasm
|
||||||
|
yasm
|
||||||
|
x264-devel
|
||||||
|
bzip2-devel
|
||||||
)
|
)
|
||||||
|
|
||||||
if [[ -n "$UPDATE_LIB" ]]
|
if [[ -n "$UPDATE_LIB" ]]
|
||||||
@@ -52,6 +56,8 @@ then
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [ -n "${NEEDED_PKGS}" ]; then
|
if [ -n "${NEEDED_PKGS}" ]; then
|
||||||
|
sudo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
|
||||||
|
sudo dnf -y update
|
||||||
sudo dnf install -y ${NEEDED_PKGS}
|
sudo dnf install -y ${NEEDED_PKGS}
|
||||||
fi
|
fi
|
||||||
echo -e "done\n"
|
echo -e "done\n"
|
||||||
|
|||||||
@@ -7,8 +7,9 @@ namespace QIDIStudio {
|
|||||||
|
|
||||||
//QDS: only check wodth when dE is longer than this value
|
//QDS: only check wodth when dE is longer than this value
|
||||||
const double CHECK_WIDTH_E_THRESHOLD = 0.0025;
|
const double CHECK_WIDTH_E_THRESHOLD = 0.0025;
|
||||||
const double WIDTH_THRESHOLD = 0.02;
|
const double WIDTH_THRESHOLD = 0.05;
|
||||||
const double RADIUS_THRESHOLD = 0.005;
|
const double RADIUS_THRESHOLD = 0.005;
|
||||||
|
const double MULTI_NOZZLE_TEMP_THRESHOLD = 100;
|
||||||
|
|
||||||
const double filament_diameter = 1.75;
|
const double filament_diameter = 1.75;
|
||||||
const double Pi = 3.14159265358979323846;
|
const double Pi = 3.14159265358979323846;
|
||||||
@@ -17,14 +18,19 @@ const std::string Extrusion_Role_Tag = " FEATURE: ";
|
|||||||
const std::string Width_Tag = " LINE_WIDTH: ";
|
const std::string Width_Tag = " LINE_WIDTH: ";
|
||||||
const std::string Wipe_Start_Tag = " WIPE_START";
|
const std::string Wipe_Start_Tag = " WIPE_START";
|
||||||
const std::string Wipe_End_Tag = " WIPE_END";
|
const std::string Wipe_End_Tag = " WIPE_END";
|
||||||
|
const std::string Wipe_Tower_Start_Tag = " WIPE_TOWER_START";
|
||||||
|
const std::string Wipe_Tower_End_Tag = " WIPE_TOWER_END";
|
||||||
const std::string Layer_Change_Tag = " CHANGE_LAYER";
|
const std::string Layer_Change_Tag = " CHANGE_LAYER";
|
||||||
const std::string Height_Tag = " LAYER_HEIGHT: ";
|
const std::string Height_Tag = " LAYER_HEIGHT: ";
|
||||||
const std::string filament_flow_ratio_tag = " filament_flow_ratio";
|
const std::string filament_flow_ratio_tag = " filament_flow_ratio";
|
||||||
|
const std::string has_scarf_joint_seam_tag = " has_scarf_joint_seam";
|
||||||
const std::string nozzle_temperature_Tag = " nozzle_temperature =";
|
const std::string nozzle_temperature_Tag = " nozzle_temperature =";
|
||||||
const std::string nozzle_temperature_initial_layer_Tag = " nozzle_temperature_initial_layer";
|
const std::string nozzle_temperature_initial_layer_Tag = " nozzle_temperature_initial_layer";
|
||||||
const std::string Z_HEIGHT_TAG = " Z_HEIGHT: ";
|
const std::string Z_HEIGHT_TAG = " Z_HEIGHT: ";
|
||||||
const std::string Initial_Layer_Ptint_Height_Tag = " initial_layer_print_height =";
|
const std::string Initial_Layer_Ptint_Height_Tag = " initial_layer_print_height =";
|
||||||
const std::string Line_Width_Tag = " line_width =";
|
const std::string Line_Width_Tag = " line_width =";
|
||||||
|
const std::string Filament_Map_Tag = " filament_map =";
|
||||||
|
const std::string Physical_Extruder_Map_Tag = " physical_extruder_map =";
|
||||||
|
|
||||||
GCodeCheckResult GCodeChecker::parse_file(const std::string& path)
|
GCodeCheckResult GCodeChecker::parse_file(const std::string& path)
|
||||||
{
|
{
|
||||||
@@ -35,7 +41,11 @@ GCodeCheckResult GCodeChecker::parse_file(const std::string& path)
|
|||||||
}
|
}
|
||||||
std::string line_raw;
|
std::string line_raw;
|
||||||
std::string line;
|
std::string line;
|
||||||
|
int line_number = 0;
|
||||||
|
|
||||||
|
|
||||||
while (std::getline(file, line_raw)) {
|
while (std::getline(file, line_raw)) {
|
||||||
|
line_number++;
|
||||||
const char *c = line_raw.c_str();
|
const char *c = line_raw.c_str();
|
||||||
c = skip_whitespaces(c);
|
c = skip_whitespaces(c);
|
||||||
if (std::toupper(*c) == 'N')
|
if (std::toupper(*c) == 'N')
|
||||||
@@ -43,7 +53,8 @@ GCodeCheckResult GCodeChecker::parse_file(const std::string& path)
|
|||||||
c = skip_whitespaces(c);
|
c = skip_whitespaces(c);
|
||||||
line = c;
|
line = c;
|
||||||
if (parse_line(line) != GCodeCheckResult::Success) {
|
if (parse_line(line) != GCodeCheckResult::Success) {
|
||||||
std::cout << "Failed to parse line " << line_raw << std::endl;
|
std::cerr << "Failed to parse line " << line_number
|
||||||
|
<< ": " << line_raw << std::endl;
|
||||||
return GCodeCheckResult::ParseFailed;
|
return GCodeCheckResult::ParseFailed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -112,17 +123,40 @@ GCodeCheckResult GCodeChecker::parse_comment(GCodeLine& line)
|
|||||||
if (starts_with(comment, Extrusion_Role_Tag)) {
|
if (starts_with(comment, Extrusion_Role_Tag)) {
|
||||||
m_role = string_to_role(comment.substr(Extrusion_Role_Tag.length()));
|
m_role = string_to_role(comment.substr(Extrusion_Role_Tag.length()));
|
||||||
check_gap_infill_width = false;
|
check_gap_infill_width = false;
|
||||||
if (m_role == erExternalPerimeter) {
|
|
||||||
if (z_height == initial_layer_height && nozzle_temp != nozzle_temperature_initial_layer[filament_id]) {
|
|
||||||
std::cout << "invalid filament nozzle initial layer temperature comment with invalid value!" << std::endl;
|
|
||||||
return GCodeCheckResult::ParseFailed;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (z_height != initial_layer_height && nozzle_temp != nozzle_temperature[filament_id]) {
|
double check_nozzle_temp = 0.0f;
|
||||||
std::cout << "invalid filament nozzle temperature comment with invalid value!" << std::endl;
|
if (is_multi_nozzle == true) {
|
||||||
return GCodeCheckResult::ParseFailed;
|
check_nozzle_temp = multi_nozzle_temp[current_nozzle_id];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
check_nozzle_temp = nozzle_temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_role == erExternalPerimeter) {
|
||||||
|
if (z_height != initial_layer_height) {
|
||||||
|
if (is_multi_nozzle) {
|
||||||
|
double expected_temp = nozzle_temperature[filament_id];
|
||||||
|
if (std::abs(check_nozzle_temp - expected_temp) > MULTI_NOZZLE_TEMP_THRESHOLD) {
|
||||||
|
// for two nozzle gcode, remove temp check temply
|
||||||
|
//std::cout << "Multi-nozzle: Invalid filament nozzle temperature! Expected: "
|
||||||
|
// << expected_temp
|
||||||
|
// << ", but got: " << check_nozzle_temp
|
||||||
|
// << " (Threshold: ±100)." << std::endl;
|
||||||
|
return GCodeCheckResult::Success;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (check_nozzle_temp != nozzle_temperature[filament_id]) {
|
||||||
|
std::cout << "Invalid filament nozzle temperature! Expected: "
|
||||||
|
<< nozzle_temperature[filament_id]
|
||||||
|
<< ", but got: " << check_nozzle_temp << "." << std::endl;
|
||||||
|
return GCodeCheckResult::ParseFailed;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (m_role == erGapFill) {
|
}
|
||||||
|
else if (m_role == erGapFill) {
|
||||||
check_gap_infill_width = true;
|
check_gap_infill_width = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,6 +164,12 @@ GCodeCheckResult GCodeChecker::parse_comment(GCodeLine& line)
|
|||||||
m_wiping = true;
|
m_wiping = true;
|
||||||
} else if (starts_with(comment, Wipe_End_Tag)) {
|
} else if (starts_with(comment, Wipe_End_Tag)) {
|
||||||
m_wiping = false;
|
m_wiping = false;
|
||||||
|
}
|
||||||
|
else if (starts_with(comment, Wipe_Tower_Start_Tag)) {
|
||||||
|
is_wipe_tower = true;
|
||||||
|
}
|
||||||
|
else if (starts_with(comment, Wipe_Tower_End_Tag)) {
|
||||||
|
is_wipe_tower = false;
|
||||||
} else if (starts_with(comment, Height_Tag)) {
|
} else if (starts_with(comment, Height_Tag)) {
|
||||||
std::string str = comment.substr(Height_Tag.size());
|
std::string str = comment.substr(Height_Tag.size());
|
||||||
if (!parse_double_from_str(str, m_height)) {
|
if (!parse_double_from_str(str, m_height)) {
|
||||||
@@ -162,6 +202,11 @@ GCodeCheckResult GCodeChecker::parse_comment(GCodeLine& line)
|
|||||||
return GCodeCheckResult::ParseFailed;
|
return GCodeCheckResult::ParseFailed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (starts_with(comment, has_scarf_joint_seam_tag))
|
||||||
|
{
|
||||||
|
std::string str = comment.substr(has_scarf_joint_seam_tag.size() + 3);
|
||||||
|
has_scarf_joint_seam = (str == "1");
|
||||||
|
}
|
||||||
else if (starts_with(comment, nozzle_temperature_Tag)) {
|
else if (starts_with(comment, nozzle_temperature_Tag)) {
|
||||||
std::string str = comment.substr(nozzle_temperature_Tag.size() + 1);
|
std::string str = comment.substr(nozzle_temperature_Tag.size() + 1);
|
||||||
if (!parse_double_from_str(str, nozzle_temperature)) {
|
if (!parse_double_from_str(str, nozzle_temperature)) {
|
||||||
@@ -175,7 +220,36 @@ GCodeCheckResult GCodeChecker::parse_comment(GCodeLine& line)
|
|||||||
std::cout << "invalid nozzle temperature initial layer comment with invalid value!" << std::endl;
|
std::cout << "invalid nozzle temperature initial layer comment with invalid value!" << std::endl;
|
||||||
return GCodeCheckResult::ParseFailed;
|
return GCodeCheckResult::ParseFailed;
|
||||||
}
|
}
|
||||||
} else if (starts_with(comment, Z_HEIGHT_TAG)) {
|
}
|
||||||
|
else if (starts_with(comment, Filament_Map_Tag)) {
|
||||||
|
std::string str = comment.substr(Filament_Map_Tag.size() + 1);
|
||||||
|
if (!parse_double_from_str(str, filament_map)) {
|
||||||
|
std::cout << "invalid filament map comment with invalid value!" << std::endl;
|
||||||
|
return GCodeCheckResult::ParseFailed;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (size_t i = 0; i < filament_map.size(); ++i) {
|
||||||
|
filament_map[i] -= 1;
|
||||||
|
}
|
||||||
|
is_multi_nozzle = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (starts_with(comment, Physical_Extruder_Map_Tag)) {
|
||||||
|
std::string str = comment.substr(Physical_Extruder_Map_Tag.size() + 1);
|
||||||
|
std::vector<double>tmp;
|
||||||
|
|
||||||
|
if (!parse_double_from_str(str, tmp)){
|
||||||
|
std::cout << "invalid physical extruder map comment with invalid value!" << std::endl;
|
||||||
|
return GCodeCheckResult::ParseFailed;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t idx = 0; idx < tmp.size(); ++idx) {
|
||||||
|
physical_to_logic_extruder_map[(int)(tmp[idx])]= idx;
|
||||||
|
logic_to_physical_extruder_map[idx] = (int)(tmp[idx]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (starts_with(comment, Z_HEIGHT_TAG)) {
|
||||||
std::string str = comment.substr(Z_HEIGHT_TAG.size());
|
std::string str = comment.substr(Z_HEIGHT_TAG.size());
|
||||||
if (!parse_double_from_str(str, z_height)) {
|
if (!parse_double_from_str(str, z_height)) {
|
||||||
std::cout << "invalid z height comment with invalid value!" << std::endl;
|
std::cout << "invalid z height comment with invalid value!" << std::endl;
|
||||||
@@ -232,6 +306,10 @@ GCodeCheckResult GCodeChecker::parse_command(GCodeLine& gcode_line)
|
|||||||
ret = parse_M104_M109(gcode_line);
|
ret = parse_M104_M109(gcode_line);
|
||||||
break;
|
break;
|
||||||
} // Set to nozzle temperature
|
} // Set to nozzle temperature
|
||||||
|
case 1020: {
|
||||||
|
ret = parse_M1020(gcode_line);
|
||||||
|
break;
|
||||||
|
}
|
||||||
default: { break; }
|
default: { break; }
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -239,7 +317,7 @@ GCodeCheckResult GCodeChecker::parse_command(GCodeLine& gcode_line)
|
|||||||
case 'T':{
|
case 'T':{
|
||||||
|
|
||||||
int pt = ::atoi(&cmd[1]);
|
int pt = ::atoi(&cmd[1]);
|
||||||
if (pt == 1000 || pt == 1100 || pt == 255) {
|
if (pt == 1000 || pt == 1100 || pt == 255 || pt == 1001 || pt == 65535 || pt == 65279 || pt == -1) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,9 +327,24 @@ GCodeCheckResult GCodeChecker::parse_command(GCodeLine& gcode_line)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
filament_id = pt;
|
filament_id = pt;
|
||||||
|
|
||||||
|
if (is_multi_nozzle == true) {
|
||||||
|
set_current_nozzle(pt);
|
||||||
|
}
|
||||||
|
|
||||||
flow_ratio = filament_flow_ratio[pt];
|
flow_ratio = filament_flow_ratio[pt];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 'S': {
|
||||||
|
if (cmd.compare(0, 4, "SYNC") == 0) {
|
||||||
|
// Valid SYNC command
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Invalid SYNC command
|
||||||
|
ret = GCodeCheckResult::ParseFailed;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
default: {
|
default: {
|
||||||
//QDS: other g command? impossible! must be invalid
|
//QDS: other g command? impossible! must be invalid
|
||||||
ret = GCodeCheckResult::ParseFailed;
|
ret = GCodeCheckResult::ParseFailed;
|
||||||
@@ -407,20 +500,31 @@ GCodeCheckResult GCodeChecker::parse_G92(GCodeLine& gcode_line)
|
|||||||
return GCodeCheckResult::ParseFailed;
|
return GCodeCheckResult::ParseFailed;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gcode_line.has(X))
|
bool any_found = false;
|
||||||
|
if (gcode_line.has(X)){
|
||||||
m_origin[X] = m_end_position[X] - gcode_line.get(X);
|
m_origin[X] = m_end_position[X] - gcode_line.get(X);
|
||||||
|
any_found = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (gcode_line.has(Y))
|
if (gcode_line.has(Y)){
|
||||||
m_origin[Y] = m_end_position[Y] - gcode_line.get(Y);
|
m_origin[Y] = m_end_position[Y] - gcode_line.get(Y);
|
||||||
|
any_found = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (gcode_line.has(Z))
|
if (gcode_line.has(Z)){
|
||||||
m_origin[Z] = m_end_position[Z] - gcode_line.get(Z);
|
m_origin[Z] = m_end_position[Z] - gcode_line.get(Z);
|
||||||
|
any_found = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (gcode_line.has(E))
|
if (gcode_line.has(E)){
|
||||||
m_end_position[E] = gcode_line.get(E);
|
m_end_position[E] = gcode_line.get(E);
|
||||||
|
any_found = true;
|
||||||
|
}
|
||||||
|
|
||||||
for (unsigned char a = X; a <= E; ++a) {
|
if (!any_found) {
|
||||||
m_origin[a] = m_end_position[a];
|
for (unsigned char a = X; a <= E; ++a) {
|
||||||
|
m_origin[a] = m_end_position[a];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return GCodeCheckResult::Success;
|
return GCodeCheckResult::Success;
|
||||||
@@ -455,20 +559,83 @@ GCodeCheckResult GCodeChecker::parse_M104_M109(const GCodeLine &gcode_line)
|
|||||||
const char *c = gcode_line.m_raw.c_str();
|
const char *c = gcode_line.m_raw.c_str();
|
||||||
const char *rs = strchr(c,'S');
|
const char *rs = strchr(c,'S');
|
||||||
|
|
||||||
std::string str=rs;
|
std::string strS = rs;
|
||||||
str = str.substr(1);
|
strS = strS.substr(1);
|
||||||
for (int i = 0; i < str.size(); i++) {
|
for (int i = 0; i < strS.size(); i++) {
|
||||||
if (str[i] == ' ')
|
if (strS[i] == ' ')
|
||||||
str=str.substr(0,i);
|
strS = strS.substr(0,i);
|
||||||
}
|
}
|
||||||
if (!parse_double_from_str(str, nozzle_temp)) {
|
double temp_nozzle_temp;
|
||||||
|
|
||||||
|
if (!parse_double_from_str(strS, temp_nozzle_temp)) {
|
||||||
std::cout << "invalid nozzle temperature comment with invalid value!" << std::endl;
|
std::cout << "invalid nozzle temperature comment with invalid value!" << std::endl;
|
||||||
return GCodeCheckResult::ParseFailed;
|
return GCodeCheckResult::ParseFailed;
|
||||||
}
|
}
|
||||||
|
if (is_multi_nozzle == true) {
|
||||||
|
const char* rt = strchr(c, 'T');
|
||||||
|
if (rt) {
|
||||||
|
std::string strT = rt + 1; // 跳过 'T'
|
||||||
|
for (size_t i = 0; i < strT.size(); i++) {
|
||||||
|
if (strT[i] == ' ') {
|
||||||
|
strT = strT.substr(0, i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int logic_nozzle_id = physical_to_logic_extruder_map[std::stoi(strT)];
|
||||||
|
multi_nozzle_temp[logic_nozzle_id] = temp_nozzle_temp;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
multi_nozzle_temp[current_nozzle_id] = temp_nozzle_temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
nozzle_temp = temp_nozzle_temp;
|
||||||
|
}
|
||||||
|
|
||||||
return GCodeCheckResult::Success;
|
return GCodeCheckResult::Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GCodeCheckResult GCodeChecker::parse_M1020(const GCodeLine& gcode_line)
|
||||||
|
{
|
||||||
|
const char* c = gcode_line.m_raw.c_str();
|
||||||
|
const char* rs = strchr(c, 'S');
|
||||||
|
|
||||||
|
if (rs != nullptr) {
|
||||||
|
std::string str = rs;
|
||||||
|
str = str.substr(1);
|
||||||
|
for (int i = 0; i < str.size(); i++) {
|
||||||
|
if (str[i] == ' ')
|
||||||
|
str = str.substr(0, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
int value = std::stoi(str);
|
||||||
|
if (value >= 0 && value <= filament_flow_ratio.size() - 1) {
|
||||||
|
filament_id = value;
|
||||||
|
flow_ratio = filament_flow_ratio[value];
|
||||||
|
return GCodeCheckResult::Success;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return GCodeCheckResult::ParseFailed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (std::invalid_argument&) {
|
||||||
|
std::cout << "Invalid argument: not a valid integer" << std::endl;
|
||||||
|
return GCodeCheckResult::ParseFailed;
|
||||||
|
}
|
||||||
|
catch (std::out_of_range&) {
|
||||||
|
std::cout << "Out of range: number is too large" << std::endl;
|
||||||
|
return GCodeCheckResult::ParseFailed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::cout << "Missing 'S' character in the G-code line!" << std::endl;
|
||||||
|
return GCodeCheckResult::ParseFailed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
double GCodeChecker::calculate_G1_width(const std::array<double, 3>& source,
|
double GCodeChecker::calculate_G1_width(const std::array<double, 3>& source,
|
||||||
const std::array<double, 3>& target,
|
const std::array<double, 3>& target,
|
||||||
double e, double height, bool is_bridge) const
|
double e, double height, bool is_bridge) const
|
||||||
@@ -593,8 +760,21 @@ GCodeCheckResult GCodeChecker::check_G0_G1_width(const GCodeLine& line)
|
|||||||
std::array<double, 3> target = { m_end_position[X], m_end_position[Y], m_end_position[Z] };
|
std::array<double, 3> target = { m_end_position[X], m_end_position[Y], m_end_position[Z] };
|
||||||
|
|
||||||
bool is_bridge = m_role == erOverhangPerimeter || m_role == erBridgeInfill;
|
bool is_bridge = m_role == erOverhangPerimeter || m_role == erBridgeInfill;
|
||||||
if (!is_bridge) {
|
if (!is_bridge && !is_wipe_tower) {
|
||||||
double width_real = calculate_G1_width(source, target, delta_pos[E], m_height, is_bridge);
|
double real_height = m_height;
|
||||||
|
if (line.has(Z) && has_scarf_joint_seam && line.get(Z) != 0)
|
||||||
|
{
|
||||||
|
if (line.get(Z) == z_height)
|
||||||
|
{
|
||||||
|
return GCodeCheckResult::Success;
|
||||||
|
}
|
||||||
|
if (line.get(Z) && line.get(E))
|
||||||
|
{
|
||||||
|
return GCodeCheckResult::Success;
|
||||||
|
}
|
||||||
|
real_height = line.get(Z) - (z_height - m_height);
|
||||||
|
}
|
||||||
|
double width_real = calculate_G1_width(source, target, delta_pos[E], real_height, is_bridge);
|
||||||
if (fabs(width_real - m_width) > WIDTH_THRESHOLD) {
|
if (fabs(width_real - m_width) > WIDTH_THRESHOLD) {
|
||||||
std::cout << "Invalid G0_G1 because has abnormal line width." << std::endl;
|
std::cout << "Invalid G0_G1 because has abnormal line width." << std::endl;
|
||||||
std::cout << "Width: " << m_width << " Width_real: " << width_real << std::endl;
|
std::cout << "Width: " << m_width << " Width_real: " << width_real << std::endl;
|
||||||
@@ -607,6 +787,16 @@ GCodeCheckResult GCodeChecker::check_G0_G1_width(const GCodeLine& line)
|
|||||||
return GCodeCheckResult::Success;
|
return GCodeCheckResult::Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GCodeChecker::set_current_nozzle(int filament_id) {
|
||||||
|
if (filament_id >= 0 && filament_id < static_cast<int>(filament_map.size())) {
|
||||||
|
current_nozzle_id = filament_map[filament_id];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
std::cerr << "Error: filament_id is out of range!" << std::endl;
|
||||||
|
current_nozzle_id = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
GCodeCheckResult GCodeChecker::check_G2_G3_width(const GCodeLine& line)
|
GCodeCheckResult GCodeChecker::check_G2_G3_width(const GCodeLine& line)
|
||||||
{
|
{
|
||||||
auto absolute_position = [this](Axis axis, const GCodeLine& lineG2_3) {
|
auto absolute_position = [this](Axis axis, const GCodeLine& lineG2_3) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <array>
|
#include <array>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
namespace QIDIStudio {
|
namespace QIDIStudio {
|
||||||
|
|
||||||
@@ -109,12 +110,14 @@ private:
|
|||||||
GCodeCheckResult parse_M82(const GCodeLine& gcode_line);
|
GCodeCheckResult parse_M82(const GCodeLine& gcode_line);
|
||||||
GCodeCheckResult parse_M83(const GCodeLine& gcode_line);
|
GCodeCheckResult parse_M83(const GCodeLine& gcode_line);
|
||||||
GCodeCheckResult parse_M104_M109(const GCodeLine &gcode_line);
|
GCodeCheckResult parse_M104_M109(const GCodeLine &gcode_line);
|
||||||
|
GCodeCheckResult parse_M1020(const GCodeLine& gcode_line);
|
||||||
|
|
||||||
GCodeCheckResult parse_comment(GCodeLine& gcode_line);
|
GCodeCheckResult parse_comment(GCodeLine& gcode_line);
|
||||||
|
|
||||||
GCodeCheckResult check_line_width(const GCodeLine& gcode_line);
|
GCodeCheckResult check_line_width(const GCodeLine& gcode_line);
|
||||||
GCodeCheckResult check_G0_G1_width(const GCodeLine& gcode_line);
|
GCodeCheckResult check_G0_G1_width(const GCodeLine& gcode_line);
|
||||||
GCodeCheckResult check_G2_G3_width(const GCodeLine& gcode_line);
|
GCodeCheckResult check_G2_G3_width(const GCodeLine& gcode_line);
|
||||||
|
void set_current_nozzle(int id);
|
||||||
|
|
||||||
double calculate_G1_width(const std::array<double, 3>& source,
|
double calculate_G1_width(const std::array<double, 3>& source,
|
||||||
const std::array<double, 3>& target,
|
const std::array<double, 3>& target,
|
||||||
@@ -167,7 +170,7 @@ public:
|
|||||||
std::string cmd=input;
|
std::string cmd=input;
|
||||||
size_t read = 0;
|
size_t read = 0;
|
||||||
|
|
||||||
while (cmd.size() >= 5)
|
while (cmd.find(',') != std::string::npos)
|
||||||
{
|
{
|
||||||
int pt = 0;
|
int pt = 0;
|
||||||
for (pt = 0; pt < cmd.size(); pt++) {
|
for (pt = 0; pt < cmd.size(); pt++) {
|
||||||
@@ -213,10 +216,22 @@ private:
|
|||||||
bool check_gap_infill_width = false;
|
bool check_gap_infill_width = false;
|
||||||
int filament_id;
|
int filament_id;
|
||||||
double flow_ratio = 0;
|
double flow_ratio = 0;
|
||||||
|
|
||||||
double nozzle_temp = 0.0f;
|
double nozzle_temp = 0.0f;
|
||||||
|
std::array<double, 2> multi_nozzle_temp = { 0.0, 0.0 };
|
||||||
|
int current_nozzle_id = 0;
|
||||||
|
|
||||||
|
std::vector<double> filament_map;
|
||||||
|
|
||||||
|
std::map<int, int> physical_to_logic_extruder_map;
|
||||||
|
std::map<int, int> logic_to_physical_extruder_map;
|
||||||
std::vector<double> filament_flow_ratio;
|
std::vector<double> filament_flow_ratio;
|
||||||
std::vector<double> nozzle_temperature;
|
std::vector<double> nozzle_temperature;
|
||||||
std::vector<double> nozzle_temperature_initial_layer;
|
std::vector<double> nozzle_temperature_initial_layer;
|
||||||
|
|
||||||
|
bool has_scarf_joint_seam = false;
|
||||||
|
bool is_wipe_tower = false;
|
||||||
|
bool is_multi_nozzle = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
|
src/libslic3r/PresetBundle.cpp
|
||||||
|
src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.h
|
||||||
|
src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp
|
||||||
|
src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.h
|
||||||
|
src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.cpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp
|
src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp
|
src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp
|
src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp
|
||||||
|
src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoMove.cpp
|
src/slic3r/GUI/Gizmos/GLGizmoMove.cpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp
|
src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoScale.cpp
|
src/slic3r/GUI/Gizmos/GLGizmoScale.cpp
|
||||||
@@ -16,6 +22,10 @@ src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp
|
|||||||
src/slic3r/GUI/Gizmos/GLGizmoSeam.hpp
|
src/slic3r/GUI/Gizmos/GLGizmoSeam.hpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoText.cpp
|
src/slic3r/GUI/Gizmos/GLGizmoText.cpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoText.hpp
|
src/slic3r/GUI/Gizmos/GLGizmoText.hpp
|
||||||
|
src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp
|
||||||
|
src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp
|
||||||
|
src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp
|
||||||
|
src/slic3r/GUI/Gizmos/GLGizmoSVG.hpp
|
||||||
src/slic3r/GUI/GUI.cpp
|
src/slic3r/GUI/GUI.cpp
|
||||||
src/slic3r/GUI/GUI_App.cpp
|
src/slic3r/GUI/GUI_App.cpp
|
||||||
src/slic3r/GUI/GUI_AuxiliaryList.cpp
|
src/slic3r/GUI/GUI_AuxiliaryList.cpp
|
||||||
@@ -33,10 +43,14 @@ src/slic3r/GUI/HintNotification.cpp
|
|||||||
src/slic3r/GUI/IMSlider.cpp
|
src/slic3r/GUI/IMSlider.cpp
|
||||||
src/slic3r/GUI/Widgets/SideTools.cpp
|
src/slic3r/GUI/Widgets/SideTools.cpp
|
||||||
src/slic3r/GUI/Widgets/AMSControl.cpp
|
src/slic3r/GUI/Widgets/AMSControl.cpp
|
||||||
|
src/slic3r/GUI/Widgets/FanControl.cpp
|
||||||
|
src/slic3r/GUI/Widgets/FilamentLoad.cpp
|
||||||
|
src/slic3r/GUI/Widgets/TempInput.cpp
|
||||||
src/slic3r/GUI/ImGuiWrapper.cpp
|
src/slic3r/GUI/ImGuiWrapper.cpp
|
||||||
src/slic3r/GUI/Jobs/ArrangeJob.cpp
|
src/slic3r/GUI/Jobs/ArrangeJob.cpp
|
||||||
src/slic3r/GUI/Jobs/OrientJob.cpp
|
src/slic3r/GUI/Jobs/OrientJob.cpp
|
||||||
src/slic3r/GUI/Jobs/FillBedJob.cpp
|
src/slic3r/GUI/Jobs/FillBedJob.cpp
|
||||||
|
src/slic3r/GUI/Jobs/EmbossJob.cpp
|
||||||
src/slic3r/GUI/Jobs/Job.cpp
|
src/slic3r/GUI/Jobs/Job.cpp
|
||||||
src/slic3r/GUI/Jobs/PlaterJob.cpp
|
src/slic3r/GUI/Jobs/PlaterJob.cpp
|
||||||
src/slic3r/GUI/Jobs/RotoptimizeJob.cpp
|
src/slic3r/GUI/Jobs/RotoptimizeJob.cpp
|
||||||
@@ -50,7 +64,7 @@ src/slic3r/GUI/AMSMaterialsSetting.cpp
|
|||||||
src/slic3r/GUI/ExtrusionCalibration.cpp
|
src/slic3r/GUI/ExtrusionCalibration.cpp
|
||||||
src/slic3r/GUI/AMSMappingPopup.cpp
|
src/slic3r/GUI/AMSMappingPopup.cpp
|
||||||
src/slic3r/GUI/AMSSetting.cpp
|
src/slic3r/GUI/AMSSetting.cpp
|
||||||
src/slic3r/GUI/QDTTopbar.cpp
|
src/slic3r/GUI/BBLTopbar.cpp
|
||||||
src/slic3r/GUI/DownloadProgressDialog.cpp
|
src/slic3r/GUI/DownloadProgressDialog.cpp
|
||||||
src/slic3r/GUI/RecenterDialog.cpp
|
src/slic3r/GUI/RecenterDialog.cpp
|
||||||
src/slic3r/GUI/BackgroundSlicingProcess.cpp
|
src/slic3r/GUI/BackgroundSlicingProcess.cpp
|
||||||
@@ -70,9 +84,13 @@ src/slic3r/GUI/MainFrame.cpp
|
|||||||
src/slic3r/GUI/MediaPlayCtrl.cpp
|
src/slic3r/GUI/MediaPlayCtrl.cpp
|
||||||
src/slic3r/GUI/MediaFilePanel.cpp
|
src/slic3r/GUI/MediaFilePanel.cpp
|
||||||
src/slic3r/GUI/ImageGrid.cpp
|
src/slic3r/GUI/ImageGrid.cpp
|
||||||
|
src/slic3r/GUI/Widgets/ImageSwitchButton.cpp
|
||||||
src/slic3r/GUI/Printer/PrinterFileSystem.cpp
|
src/slic3r/GUI/Printer/PrinterFileSystem.cpp
|
||||||
src/slic3r/GUI/Mouse3DController.cpp
|
src/slic3r/GUI/Mouse3DController.cpp
|
||||||
|
src/slic3r/GUI/SelectMachinePop.cpp
|
||||||
src/slic3r/GUI/StatusPanel.cpp
|
src/slic3r/GUI/StatusPanel.cpp
|
||||||
|
src/slic3r/GUI/StepMeshDialog.cpp
|
||||||
|
src/slic3r/GUI/StepMeshDialog.hpp
|
||||||
src/slic3r/GUI/Monitor.cpp
|
src/slic3r/GUI/Monitor.cpp
|
||||||
src/slic3r/GUI/MsgDialog.cpp
|
src/slic3r/GUI/MsgDialog.cpp
|
||||||
src/slic3r/GUI/NotificationManager.hpp
|
src/slic3r/GUI/NotificationManager.hpp
|
||||||
@@ -95,6 +113,7 @@ src/slic3r/GUI/SavePresetDialog.cpp
|
|||||||
src/slic3r/GUI/Search.cpp
|
src/slic3r/GUI/Search.cpp
|
||||||
src/slic3r/GUI/Selection.cpp
|
src/slic3r/GUI/Selection.cpp
|
||||||
src/slic3r/GUI/SelectMachine.cpp
|
src/slic3r/GUI/SelectMachine.cpp
|
||||||
|
src/slic3r/GUI/PrePrintChecker.cpp
|
||||||
src/slic3r/GUI/SendSystemInfoDialog.cpp
|
src/slic3r/GUI/SendSystemInfoDialog.cpp
|
||||||
src/slic3r/GUI/SendToPrinter.cpp
|
src/slic3r/GUI/SendToPrinter.cpp
|
||||||
src/slic3r/GUI/SlicingProgressNotification.cpp
|
src/slic3r/GUI/SlicingProgressNotification.cpp
|
||||||
@@ -106,6 +125,7 @@ src/slic3r/GUI/Auxiliary.cpp
|
|||||||
src/slic3r/GUI/UpdateDialogs.cpp
|
src/slic3r/GUI/UpdateDialogs.cpp
|
||||||
src/slic3r/GUI/UnsavedChangesDialog.cpp
|
src/slic3r/GUI/UnsavedChangesDialog.cpp
|
||||||
src/slic3r/GUI/ObjColorDialog.cpp
|
src/slic3r/GUI/ObjColorDialog.cpp
|
||||||
|
src/slic3r/GUI/SyncAmsInfoDialog.cpp
|
||||||
src/slic3r/GUI/WipeTowerDialog.cpp
|
src/slic3r/GUI/WipeTowerDialog.cpp
|
||||||
src/slic3r/GUI/wxExtensions.cpp
|
src/slic3r/GUI/wxExtensions.cpp
|
||||||
src/slic3r/GUI/WebUserLoginDialog.cpp
|
src/slic3r/GUI/WebUserLoginDialog.cpp
|
||||||
@@ -121,6 +141,7 @@ src/slic3r/Utils/Http.cpp
|
|||||||
src/slic3r/Utils/Process.cpp
|
src/slic3r/Utils/Process.cpp
|
||||||
src/slic3r/GUI/Jobs/PrintJob.cpp
|
src/slic3r/GUI/Jobs/PrintJob.cpp
|
||||||
src/libslic3r/GCode.cpp
|
src/libslic3r/GCode.cpp
|
||||||
|
src/libslic3r/GCode/ToolOrdering.cpp
|
||||||
src/libslic3r/ExtrusionEntity.cpp
|
src/libslic3r/ExtrusionEntity.cpp
|
||||||
src/libslic3r/Flow.cpp
|
src/libslic3r/Flow.cpp
|
||||||
src/libslic3r/Format/AMF.cpp
|
src/libslic3r/Format/AMF.cpp
|
||||||
@@ -140,7 +161,9 @@ src/slic3r/GUI/CalibrationWizardPage.cpp
|
|||||||
src/slic3r/GUI/CalibrationPanel.cpp
|
src/slic3r/GUI/CalibrationPanel.cpp
|
||||||
src/slic3r/GUI/CalibrationWizard.cpp
|
src/slic3r/GUI/CalibrationWizard.cpp
|
||||||
src/slic3r/GUI/CalibrationWizardStartPage.cpp
|
src/slic3r/GUI/CalibrationWizardStartPage.cpp
|
||||||
|
src/slic3r/GUI/CalibrationWizardSavePage.cpp
|
||||||
src/slic3r/GUI/CalibrationWizardPresetPage.cpp
|
src/slic3r/GUI/CalibrationWizardPresetPage.cpp
|
||||||
|
src/slic3r/GUI/CalibrationWizardCaliPage.cpp
|
||||||
src/slic3r/GUI/CaliHistoryDialog.cpp
|
src/slic3r/GUI/CaliHistoryDialog.cpp
|
||||||
src/slic3r/GUI/calib_dlg.cpp
|
src/slic3r/GUI/calib_dlg.cpp
|
||||||
src/slic3r/GUI/BonjourDialog.cpp
|
src/slic3r/GUI/BonjourDialog.cpp
|
||||||
@@ -163,4 +186,16 @@ src/slic3r/GUI/SendMultiMachinePage.cpp
|
|||||||
src/slic3r/GUI/MultiMachinePage.cpp
|
src/slic3r/GUI/MultiMachinePage.cpp
|
||||||
src/slic3r/GUI/MultiMachineManagerPage.cpp
|
src/slic3r/GUI/MultiMachineManagerPage.cpp
|
||||||
src/slic3r/GUI/MultiTaskManagerPage.cpp
|
src/slic3r/GUI/MultiTaskManagerPage.cpp
|
||||||
src/slic3r/GUI/MultiMachine.cpp
|
src/slic3r/GUI/MultiMachine.cpp
|
||||||
|
src/slic3r/GUI/UserPresetsDialog.cpp
|
||||||
|
src/slic3r/GUI/FilamentMapDialog.cpp
|
||||||
|
src/slic3r/GUI/FilamentGroupPopup.cpp
|
||||||
|
src/slic3r/GUI/FilamentMapPanel.cpp
|
||||||
|
src/slic3r/GUI/PartSkipDialog.cpp
|
||||||
|
src/slic3r/GUI/PartSkipDialog.hpp
|
||||||
|
src/slic3r/GUI/SkipPartCanvas.cpp
|
||||||
|
src/slic3r/GUI/SkipPartCanvas.hpp
|
||||||
|
src/slic3r/GUI/FilamentBitmapUtils.cpp
|
||||||
|
src/slic3r/GUI/FilamentBitmapUtils.hpp
|
||||||
|
src/slic3r/GUI/FilamentPickerDialog.cpp
|
||||||
|
src/slic3r/GUI/FilamentPickerDialog.hpp
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 560 KiB After Width: | Height: | Size: 502 KiB |
@@ -1,4 +1,92 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIFfzCCA2egAwIBAgIUXtzR6tRiL/RHBRXOoyFU0+XrliowDQYJKoZIhvcNAQEL
|
||||||
|
BQAwRjELMAkGA1UEBhMCQ04xITAfBgNVBAoMGEJCTCBUZWNobm9sb2dpZXMgQ28u
|
||||||
|
IEx0ZDEUMBIGA1UEAwwLQkJMIENBMiBSU0EwIBcNMjUwNjE3MDEzODA4WhgPMjA1
|
||||||
|
MDA2MTcwMTM4MDhaMEYxCzAJBgNVBAYTAkNOMSEwHwYDVQQKDBhCQkwgVGVjaG5v
|
||||||
|
bG9naWVzIENvLiBMdGQxFDASBgNVBAMMC0JCTCBDQTIgUlNBMIICIjANBgkqhkiG
|
||||||
|
9w0BAQEFAAOCAg8AMIICCgKCAgEAo4550G4c42gTKzQqixwKT089RizIdZpyOcGA
|
||||||
|
679rPaOdWsMqVwnYPP2FpMqXKkjFbedE+SpGloi2NKCuiPNVRbq9PHOOZwTs7YLo
|
||||||
|
bOwf53FJuO6vRFpzFfX1tlc9zlFqJvZnYO9NgHpMysidocWcgrDN/SIDywgPB5CV
|
||||||
|
bYg3Vvzua9fwZx9e5KT9xd5IpTqdTrWS47jQOVKLhdQCbJFIlMrblOwLBAx+fHok
|
||||||
|
wqh6tkI6Ktuyyjw8Dysebi1ndWjKtZ2mW47r8xZ/J+z3EZqcyJMY6MRtx/zb1jBF
|
||||||
|
uHtkjrb5Kv1DMzSKlkaNJIbvC+Mk+hI97W+SjLSRuIdC7+oJUzWaSzgu9cjXCVfm
|
||||||
|
q8t4IL/35hP69PK95LgLectIrP96CYAT/aVMG19FrFW0QWEyfT+kzG4jkumfPbHq
|
||||||
|
Y2nNkEN0+tjj3h4WdzrWgQEojK/lhfcRFVkts74+aZoMpQP+vmL17CKmSzXk5o/e
|
||||||
|
K21xgxJdzMbdztfTpibiXk0abfOpN+1VR+3NYa+bROAKNyGaReEGsyW2bjcjNx51
|
||||||
|
5Vqzj3SVxhMSp5vfF9E4A1jE99M/l9jQDM6RzkT0lMccGAd5tUSdNvDlrqtQaQiK
|
||||||
|
v/ZsXPgXLTWfOpvaLNEgwdMgZMuhjpkwvAZyoYfeF9kyydjDh7bvrX//cz/VopAU
|
||||||
|
lxUtQtMCAwEAAaNjMGEwHQYDVR0OBBYEFNVJgQad1sNTN0jxVkwbJ/XM1an1MB8G
|
||||||
|
A1UdIwQYMBaAFNVJgQad1sNTN0jxVkwbJ/XM1an1MA8GA1UdEwEB/wQFMAMBAf8w
|
||||||
|
DgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQBFZDKMJfp/N4gBeFHh
|
||||||
|
MiFehaUyMS6e9mzrTfMLJLJoj6Jopa9V9jIfcCEBGZuRThqFcATV+UdFHSINpUcH
|
||||||
|
upcCYnazTRC4dn1hnxnQ1ojQcHxdGp9xGw/YclAKD97d8bPShfBMT1to9zbMK7T5
|
||||||
|
L8zgqg01YIOKjQk0Hcd0+0iUr6m8zQ5P8Rl3QXqAyeWgqmYQrrjTWwPsgdfHNXKX
|
||||||
|
vDrx7/cqry5lKU802hUplKMBxelv4W8407Ytj1lfJOwvxqxxsFU5jSwcUG3zo2vk
|
||||||
|
QtjRs8m5BKup5K1OPYkkPu7Ld89X0XpU073/dNDG11uxb1eDKrtNP6vZuZjNE2Pq
|
||||||
|
8HCoI1EtP+ItyqtUMvHi6Z2zsmlA25broVioeUKxjlIecpQ9JR/FhDu9CWNF/nDW
|
||||||
|
LSORNaMMzgsMSzI+HCiUhqN+qMIvVP6rzGTJzwqz/lc5Lf+ZPCnGA9WJTT4uPIhf
|
||||||
|
ufbZmnUJ35WuWKHxovDsqBh88zQ9sZ+ei4Hi4vVzOhUgfG3aLoSQEYqRoqaboANh
|
||||||
|
wCwzyuW2Rv54u5QSBbd6Gx1OpvsWmLPWd2/iL2kISl5wfmLGVydvSJa+rbOfuAy7
|
||||||
|
ycVQacVDQCAnbhoVrQy7+454QsKSW3ZV6BcyRrorewCyCYgd7nyxflxHZTBEykXX
|
||||||
|
haGNe/KFNvJBMOIuIUzknRRmiQ==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIB8zCCAZmgAwIBAgIUe61jGQ4RzIC8k+sNuqbI/CaNqPIwCgYIKoZIzj0EAwIw
|
||||||
|
RjELMAkGA1UEBhMCQ04xITAfBgNVBAoMGEJCTCBUZWNobm9sb2dpZXMgQ28uIEx0
|
||||||
|
ZDEUMBIGA1UEAwwLQkJMIENBMiBFQ0MwIBcNMjUwNjE3MDEzODM1WhgPMjA1MDA2
|
||||||
|
MTcwMTM4MzVaMEYxCzAJBgNVBAYTAkNOMSEwHwYDVQQKDBhCQkwgVGVjaG5vbG9n
|
||||||
|
aWVzIENvLiBMdGQxFDASBgNVBAMMC0JCTCBDQTIgRUNDMFkwEwYHKoZIzj0CAQYI
|
||||||
|
KoZIzj0DAQcDQgAEpKTF7wRSty4DXpGJzgCPwRh8ghLlxUC3qJbyEgLqTvJgbiwY
|
||||||
|
APPHK7kVbVmerkqhHOT4QeWRlTG3dOQGLA2VpaNjMGEwHQYDVR0OBBYEFKuRpsjY
|
||||||
|
REOyIKH7HwOE6jhGBd6NMB8GA1UdIwQYMBaAFKuRpsjYREOyIKH7HwOE6jhGBd6N
|
||||||
|
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMCA0gA
|
||||||
|
MEUCIErBiUm3VdtP3rz4kb8aLpI5p+BzL7M9vElBGWWJxpHMAiEA3r5tJWVGwuxi
|
||||||
|
YCrB1c40KYFRFyahGrhOJZAj/YhRdnU=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEeTCCA2GgAwIBAgIUOq+lNIaC2xsswkFqj5JPyVBl45cwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwQjELMAkGA1UEBhMCQ04xIjAgBgNVBAoMGUJCTCBUZWNobm9sb2dpZXMgQ28u
|
||||||
|
LCBMdGQxDzANBgNVBAMMBkJCTCBDQTAeFw0yNTA2MTcwMjAxMjdaFw0zNTA2MTUw
|
||||||
|
MjAxMjdaMEYxCzAJBgNVBAYTAkNOMSEwHwYDVQQKDBhCQkwgVGVjaG5vbG9naWVz
|
||||||
|
IENvLiBMdGQxFDASBgNVBAMMC0JCTCBDQTIgUlNBMIICIjANBgkqhkiG9w0BAQEF
|
||||||
|
AAOCAg8AMIICCgKCAgEAo4550G4c42gTKzQqixwKT089RizIdZpyOcGA679rPaOd
|
||||||
|
WsMqVwnYPP2FpMqXKkjFbedE+SpGloi2NKCuiPNVRbq9PHOOZwTs7YLobOwf53FJ
|
||||||
|
uO6vRFpzFfX1tlc9zlFqJvZnYO9NgHpMysidocWcgrDN/SIDywgPB5CVbYg3Vvzu
|
||||||
|
a9fwZx9e5KT9xd5IpTqdTrWS47jQOVKLhdQCbJFIlMrblOwLBAx+fHokwqh6tkI6
|
||||||
|
Ktuyyjw8Dysebi1ndWjKtZ2mW47r8xZ/J+z3EZqcyJMY6MRtx/zb1jBFuHtkjrb5
|
||||||
|
Kv1DMzSKlkaNJIbvC+Mk+hI97W+SjLSRuIdC7+oJUzWaSzgu9cjXCVfmq8t4IL/3
|
||||||
|
5hP69PK95LgLectIrP96CYAT/aVMG19FrFW0QWEyfT+kzG4jkumfPbHqY2nNkEN0
|
||||||
|
+tjj3h4WdzrWgQEojK/lhfcRFVkts74+aZoMpQP+vmL17CKmSzXk5o/eK21xgxJd
|
||||||
|
zMbdztfTpibiXk0abfOpN+1VR+3NYa+bROAKNyGaReEGsyW2bjcjNx515Vqzj3SV
|
||||||
|
xhMSp5vfF9E4A1jE99M/l9jQDM6RzkT0lMccGAd5tUSdNvDlrqtQaQiKv/ZsXPgX
|
||||||
|
LTWfOpvaLNEgwdMgZMuhjpkwvAZyoYfeF9kyydjDh7bvrX//cz/VopAUlxUtQtMC
|
||||||
|
AwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
|
||||||
|
BBYEFNVJgQad1sNTN0jxVkwbJ/XM1an1MB8GA1UdIwQYMBaAFI80QmjcZ06PxCKe
|
||||||
|
xXxJ5avdRL4eMA0GCSqGSIb3DQEBCwUAA4IBAQAvS8tyfagaGsFf9YncA2ko/Na5
|
||||||
|
9BVF+8TlUo+32oznwIVpS1AhSgLP6rNVekXNFKbuP5htudLQ17ZRBJI/UMVyYEDq
|
||||||
|
IN7xv7Zj+zJwF6W6haYrjb2Vk8igw1XvNULZfvVNNKIkvJUiVqEslWrC+k74crk/
|
||||||
|
Wv8ChVf+zqvfIN6LV3esaGRL02J3AprQGb7DDhR1EefQMScDkNpGJMUmvCmfknrl
|
||||||
|
iK8qgvQN1SWO7JRf6fNKHsN1ZQvyP0pgLWxpT3V0/0/WttqX3cMGuJF+jVUzm/Nh
|
||||||
|
xYhFewG8vc3KzTjnwQApMA6CW554FOJWFyOD2jn5yJLT3Vue+aYDQRp4bKMx
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIICrjCCAZagAwIBAgIUOq+lNIaC2xsswkFqj5JPyVBl45gwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwQjELMAkGA1UEBhMCQ04xIjAgBgNVBAoMGUJCTCBUZWNobm9sb2dpZXMgQ28u
|
||||||
|
LCBMdGQxDzANBgNVBAMMBkJCTCBDQTAeFw0yNTA2MTcwMjAxNDdaFw0zNTA2MTUw
|
||||||
|
MjAxNDdaMEYxCzAJBgNVBAYTAkNOMSEwHwYDVQQKDBhCQkwgVGVjaG5vbG9naWVz
|
||||||
|
IENvLiBMdGQxFDASBgNVBAMMC0JCTCBDQTIgRUNDMFkwEwYHKoZIzj0CAQYIKoZI
|
||||||
|
zj0DAQcDQgAEpKTF7wRSty4DXpGJzgCPwRh8ghLlxUC3qJbyEgLqTvJgbiwYAPPH
|
||||||
|
K7kVbVmerkqhHOT4QeWRlTG3dOQGLA2VpaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAO
|
||||||
|
BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFKuRpsjYREOyIKH7HwOE6jhGBd6NMB8G
|
||||||
|
A1UdIwQYMBaAFI80QmjcZ06PxCKexXxJ5avdRL4eMA0GCSqGSIb3DQEBCwUAA4IB
|
||||||
|
AQCg6PjUSSZV+4bvejcVMvgXmKzfD95osWn0ctnoMBxPDa+m+Gg+BcLT2IlFAe3E
|
||||||
|
KYMvu4T295WQc92rjKYqW6cirFppng9uEFW2mZLimxaSmutsTftE3sbMVMJ/SLYN
|
||||||
|
PV7TFv6mcBSIFWXwmBOIpbh4BUcVfONTvdSfIqfyAVxsq4xzc2nc6hPBpAm21Ayj
|
||||||
|
ToC1ev/TbDJ8VllFZiEVmWWlIP3aNzAm8S2mOpxPB2WnanaZHSrvXLFhstyzwrjD
|
||||||
|
yO1/isOZ7wtr7rcuTJdEvvvCimOZlkfRhaDoTew9tQ0E2FVpzzSinw02qmQ1xIE9
|
||||||
|
5/H5ZzJSPkpeAHWEPnKkxg0v
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
MIIDZTCCAk2gAwIBAgIUV1FckwXElyek1onFnQ9kL7Bk4N8wDQYJKoZIhvcNAQEL
|
MIIDZTCCAk2gAwIBAgIUV1FckwXElyek1onFnQ9kL7Bk4N8wDQYJKoZIhvcNAQEL
|
||||||
BQAwQjELMAkGA1UEBhMCQ04xIjAgBgNVBAoMGUJCTCBUZWNobm9sb2dpZXMgQ28u
|
BQAwQjELMAkGA1UEBhMCQ04xIjAgBgNVBAoMGUJCTCBUZWNobm9sb2dpZXMgQ28u
|
||||||
LCBMdGQxDzANBgNVBAMMBkJCTCBDQTAeFw0yMjA0MDQwMzQyMTFaFw0zMjA0MDEw
|
LCBMdGQxDzANBgNVBAMMBkJCTCBDQTAeFw0yMjA0MDQwMzQyMTFaFw0zMjA0MDEw
|
||||||
@@ -18,4 +106,4 @@ BdOoo96iX89rRPoxeed1cpq5hZwbeka3+CJGV76itWp35Up5rmmUqrlyQOr/Wax6
|
|||||||
itosIzG0MfhgUzU51A2P/hSnD3NDMXv+wUY/AvqgIL7u7fbDKnku1GzEKIkfH8hm
|
itosIzG0MfhgUzU51A2P/hSnD3NDMXv+wUY/AvqgIL7u7fbDKnku1GzEKIkfH8hm
|
||||||
Rs6d8SCU89xyrwzQ0PR853irHas3WrHVqab3P+qNwR0YirL0Qk7Xt/q3O1griNg2
|
Rs6d8SCU89xyrwzQ0PR853irHas3WrHVqab3P+qNwR0YirL0Qk7Xt/q3O1griNg2
|
||||||
Blbjg3obpHo9
|
Blbjg3obpHo9
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
@@ -155,7 +155,7 @@ image = images/dailytips_TypesOfSupports.png
|
|||||||
|
|
||||||
; [hint:Printing Silk Filament]
|
; [hint:Printing Silk Filament]
|
||||||
; text = Printing Silk Filament\nDid you know that Silk filament needs special consideration to print it successfully? Higher temperature and lower speed are always recommended for the best results.
|
; text = Printing Silk Filament\nDid you know that Silk filament needs special consideration to print it successfully? Higher temperature and lower speed are always recommended for the best results.
|
||||||
; documentation_link= https://wiki.qidilab.com/en/x1/manual/printing-with-silk-filaments
|
; documentation_link= https://wiki.qiditech.com/en/x1/manual/printing-with-silk-filaments
|
||||||
|
|
||||||
[hint:Brim for better adhesion]
|
[hint:Brim for better adhesion]
|
||||||
text = Brim for better adhesion\nDid you know that when printing models have a small contact interface with the printing surface, it's recommended to use a brim?
|
text = Brim for better adhesion\nDid you know that when printing models have a small contact interface with the printing surface, it's recommended to use a brim?
|
||||||
@@ -173,7 +173,7 @@ image = images/dailytips_StackObject.png
|
|||||||
|
|
||||||
# hint:Flush into support/objects/infill]
|
# hint:Flush into support/objects/infill]
|
||||||
# text = Flush into support/objects/infill\nDid you know that you can save the wasted filament by flushing them into support/objects/infill during filament change?
|
# text = Flush into support/objects/infill\nDid you know that you can save the wasted filament by flushing them into support/objects/infill during filament change?
|
||||||
# documentation_link= https://wiki.qidilab.com/en/software/qidi-studio/reduce-wasting-during-filament-change
|
# documentation_link= https://wiki.qiditech.com/en/software/qidi-studio/reduce-wasting-during-filament-change
|
||||||
|
|
||||||
[hint:Improve strength]
|
[hint:Improve strength]
|
||||||
text = Improve strength\nDid you know that you can use more wall loops and higher sparse infill density to improve the strength of the model?
|
text = Improve strength\nDid you know that you can use more wall loops and higher sparse infill density to improve the strength of the model?
|
||||||
|
|||||||
329
resources/flush/flush_data_dual_highflow.txt
Normal file
@@ -0,0 +1,329 @@
|
|||||||
|
colors
|
||||||
|
#000000 #FFFFFF #545454 #8E9089 #C12E1F #F4EE2A #0086D6 #F7E6DE #00AE42 #5E43B7 #482960 #0056B8 #FEC600 #EC008C #F5547C #6F5034 #FF9016 #00B1B7 #BECF00
|
||||||
|
src dst flush
|
||||||
|
#000000 #FFFFFF 900
|
||||||
|
#000000 #545454 270
|
||||||
|
#000000 #C12E1F 900
|
||||||
|
#000000 #F4EE2A 900
|
||||||
|
#000000 #0086D6 900
|
||||||
|
#000000 #F7E6DE 900
|
||||||
|
#000000 #00AE42 900
|
||||||
|
#000000 #5E43B7 900
|
||||||
|
#000000 #482960 360
|
||||||
|
#000000 #0056B8 660
|
||||||
|
#000000 #FEC600 900
|
||||||
|
#000000 #EC008C 900
|
||||||
|
#000000 #F5547C 900
|
||||||
|
#000000 #6F5034 510
|
||||||
|
#000000 #FF9016 900
|
||||||
|
#000000 #BECF00 900
|
||||||
|
#FFFFFF #000000 120
|
||||||
|
#FFFFFF #545454 150
|
||||||
|
#FFFFFF #8E9089 120
|
||||||
|
#FFFFFF #C12E1F 120
|
||||||
|
#FFFFFF #F4EE2A 150
|
||||||
|
#FFFFFF #0086D6 90
|
||||||
|
#FFFFFF #F7E6DE 120
|
||||||
|
#FFFFFF #00AE42 120
|
||||||
|
#FFFFFF #5E43B7 150
|
||||||
|
#FFFFFF #482960 120
|
||||||
|
#FFFFFF #0056B8 150
|
||||||
|
#FFFFFF #FEC600 120
|
||||||
|
#FFFFFF #EC008C 150
|
||||||
|
#FFFFFF #F5547C 120
|
||||||
|
#FFFFFF #6F5034 150
|
||||||
|
#FFFFFF #FF9016 120
|
||||||
|
#FFFFFF #00B1B7 90
|
||||||
|
#FFFFFF #BECF00 120
|
||||||
|
#545454 #000000 150
|
||||||
|
#545454 #FFFFFF 480
|
||||||
|
#545454 #8E9089 210
|
||||||
|
#545454 #C12E1F 270
|
||||||
|
#545454 #F4EE2A 390
|
||||||
|
#545454 #0086D6 240
|
||||||
|
#545454 #F7E6DE 360
|
||||||
|
#545454 #00AE42 330
|
||||||
|
#545454 #5E43B7 180
|
||||||
|
#545454 #482960 150
|
||||||
|
#545454 #0056B8 180
|
||||||
|
#545454 #FEC600 300
|
||||||
|
#545454 #EC008C 240
|
||||||
|
#545454 #F5547C 330
|
||||||
|
#545454 #6F5034 120
|
||||||
|
#545454 #FF9016 330
|
||||||
|
#545454 #00B1B7 270
|
||||||
|
#545454 #BECF00 330
|
||||||
|
#8E9089 #000000 180
|
||||||
|
#8E9089 #FFFFFF 330
|
||||||
|
#8E9089 #545454 180
|
||||||
|
#8E9089 #C12E1F 180
|
||||||
|
#8E9089 #F4EE2A 360
|
||||||
|
#8E9089 #0086D6 180
|
||||||
|
#8E9089 #F7E6DE 360
|
||||||
|
#8E9089 #00AE42 120
|
||||||
|
#8E9089 #5E43B7 240
|
||||||
|
#8E9089 #482960 240
|
||||||
|
#8E9089 #0056B8 150
|
||||||
|
#8E9089 #FEC600 330
|
||||||
|
#8E9089 #EC008C 270
|
||||||
|
#8E9089 #F5547C 240
|
||||||
|
#8E9089 #6F5034 300
|
||||||
|
#8E9089 #FF9016 300
|
||||||
|
#8E9089 #00B1B7 180
|
||||||
|
#8E9089 #BECF00 300
|
||||||
|
#C12E1F #000000 150
|
||||||
|
#C12E1F #FFFFFF 600
|
||||||
|
#C12E1F #545454 570
|
||||||
|
#C12E1F #8E9089 390
|
||||||
|
#C12E1F #F4EE2A 900
|
||||||
|
#C12E1F #0086D6 900
|
||||||
|
#C12E1F #F7E6DE 900
|
||||||
|
#C12E1F #00AE42 540
|
||||||
|
#C12E1F #5E43B7 570
|
||||||
|
#C12E1F #482960 210
|
||||||
|
#C12E1F #0056B8 630
|
||||||
|
#C12E1F #FEC600 420
|
||||||
|
#C12E1F #EC008C 270
|
||||||
|
#C12E1F #F5547C 300
|
||||||
|
#C12E1F #6F5034 300
|
||||||
|
#C12E1F #FF9016 390
|
||||||
|
#C12E1F #00B1B7 600
|
||||||
|
#C12E1F #BECF00 660
|
||||||
|
#F4EE2A #000000 150
|
||||||
|
#F4EE2A #FFFFFF 660
|
||||||
|
#F4EE2A #545454 420
|
||||||
|
#F4EE2A #8E9089 300
|
||||||
|
#F4EE2A #C12E1F 180
|
||||||
|
#F4EE2A #0086D6 900
|
||||||
|
#F4EE2A #F7E6DE 900
|
||||||
|
#F4EE2A #00AE42 180
|
||||||
|
#F4EE2A #5E43B7 690
|
||||||
|
#F4EE2A #0056B8 360
|
||||||
|
#F4EE2A #FEC600 120
|
||||||
|
#F4EE2A #EC008C 600
|
||||||
|
#F4EE2A #F5547C 240
|
||||||
|
#F4EE2A #6F5034 270
|
||||||
|
#F4EE2A #FF9016 120
|
||||||
|
#F4EE2A #00B1B7 630
|
||||||
|
#F4EE2A #BECF00 120
|
||||||
|
#0086D6 #000000 120
|
||||||
|
#0086D6 #FFFFFF 510
|
||||||
|
#0086D6 #545454 150
|
||||||
|
#0086D6 #8E9089 180
|
||||||
|
#0086D6 #C12E1F 300
|
||||||
|
#0086D6 #F4EE2A 360
|
||||||
|
#0086D6 #F7E6DE 480
|
||||||
|
#0086D6 #00AE42 120
|
||||||
|
#0086D6 #5E43B7 210
|
||||||
|
#0086D6 #482960 120
|
||||||
|
#0086D6 #0056B8 150
|
||||||
|
#0086D6 #FEC600 330
|
||||||
|
#0086D6 #EC008C 330
|
||||||
|
#0086D6 #F5547C 330
|
||||||
|
#0086D6 #6F5034 150
|
||||||
|
#0086D6 #FF9016 300
|
||||||
|
#0086D6 #00B1B7 120
|
||||||
|
#0086D6 #BECF00 360
|
||||||
|
#F7E6DE #000000 150
|
||||||
|
#F7E6DE #FFFFFF 150
|
||||||
|
#F7E6DE #545454 120
|
||||||
|
#F7E6DE #8E9089 150
|
||||||
|
#F7E6DE #C12E1F 150
|
||||||
|
#F7E6DE #F4EE2A 120
|
||||||
|
#F7E6DE #0086D6 180
|
||||||
|
#F7E6DE #00AE42 150
|
||||||
|
#F7E6DE #5E43B7 210
|
||||||
|
#F7E6DE #482960 150
|
||||||
|
#F7E6DE #0056B8 150
|
||||||
|
#F7E6DE #FEC600 120
|
||||||
|
#F7E6DE #EC008C 150
|
||||||
|
#F7E6DE #F5547C 150
|
||||||
|
#F7E6DE #6F5034 150
|
||||||
|
#F7E6DE #FF9016 120
|
||||||
|
#F7E6DE #00B1B7 120
|
||||||
|
#F7E6DE #BECF00 120
|
||||||
|
#00AE42 #000000 120
|
||||||
|
#00AE42 #FFFFFF 690
|
||||||
|
#00AE42 #545454 330
|
||||||
|
#00AE42 #8E9089 330
|
||||||
|
#00AE42 #C12E1F 270
|
||||||
|
#00AE42 #F4EE2A 480
|
||||||
|
#00AE42 #0086D6 750
|
||||||
|
#00AE42 #F7E6DE 900
|
||||||
|
#00AE42 #5E43B7 450
|
||||||
|
#00AE42 #482960 210
|
||||||
|
#00AE42 #0056B8 240
|
||||||
|
#00AE42 #FEC600 420
|
||||||
|
#00AE42 #F5547C 390
|
||||||
|
#00AE42 #6F5034 210
|
||||||
|
#00AE42 #FF9016 420
|
||||||
|
#00AE42 #00B1B7 390
|
||||||
|
#00AE42 #BECF00 300
|
||||||
|
#5E43B7 #000000 150
|
||||||
|
#5E43B7 #FFFFFF 360
|
||||||
|
#5E43B7 #545454 150
|
||||||
|
#5E43B7 #8E9089 180
|
||||||
|
#5E43B7 #C12E1F 270
|
||||||
|
#5E43B7 #F4EE2A 570
|
||||||
|
#5E43B7 #0086D6 240
|
||||||
|
#5E43B7 #F7E6DE 660
|
||||||
|
#5E43B7 #00AE42 240
|
||||||
|
#5E43B7 #482960 240
|
||||||
|
#5E43B7 #0056B8 150
|
||||||
|
#5E43B7 #FEC600 390
|
||||||
|
#5E43B7 #EC008C 330
|
||||||
|
#5E43B7 #F5547C 270
|
||||||
|
#5E43B7 #6F5034 150
|
||||||
|
#5E43B7 #FF9016 300
|
||||||
|
#5E43B7 #00B1B7 270
|
||||||
|
#5E43B7 #BECF00 390
|
||||||
|
#482960 #000000 120
|
||||||
|
#482960 #FFFFFF 570
|
||||||
|
#482960 #545454 240
|
||||||
|
#482960 #8E9089 330
|
||||||
|
#482960 #C12E1F 480
|
||||||
|
#482960 #F4EE2A 780
|
||||||
|
#482960 #0086D6 420
|
||||||
|
#482960 #F7E6DE 900
|
||||||
|
#482960 #00AE42 510
|
||||||
|
#482960 #5E43B7 270
|
||||||
|
#482960 #0056B8 420
|
||||||
|
#482960 #FEC600 540
|
||||||
|
#482960 #EC008C 480
|
||||||
|
#482960 #F5547C 390
|
||||||
|
#482960 #6F5034 270
|
||||||
|
#482960 #FF9016 510
|
||||||
|
#482960 #00B1B7 480
|
||||||
|
#482960 #BECF00 540
|
||||||
|
#0056B8 #000000 120
|
||||||
|
#0056B8 #FFFFFF 900
|
||||||
|
#0056B8 #545454 240
|
||||||
|
#0056B8 #8E9089 330
|
||||||
|
#0056B8 #C12E1F 570
|
||||||
|
#0056B8 #F4EE2A 900
|
||||||
|
#0056B8 #0086D6 210
|
||||||
|
#0056B8 #F7E6DE 780
|
||||||
|
#0056B8 #00AE42 300
|
||||||
|
#0056B8 #5E43B7 210
|
||||||
|
#0056B8 #482960 270
|
||||||
|
#0056B8 #FEC600 630
|
||||||
|
#0056B8 #EC008C 540
|
||||||
|
#0056B8 #F5547C 660
|
||||||
|
#0056B8 #6F5034 300
|
||||||
|
#0056B8 #FF9016 690
|
||||||
|
#0056B8 #00B1B7 240
|
||||||
|
#0056B8 #BECF00 540
|
||||||
|
#FEC600 #000000 120
|
||||||
|
#FEC600 #FFFFFF 630
|
||||||
|
#FEC600 #545454 540
|
||||||
|
#FEC600 #8E9089 480
|
||||||
|
#FEC600 #C12E1F 180
|
||||||
|
#FEC600 #F4EE2A 180
|
||||||
|
#FEC600 #0086D6 900
|
||||||
|
#FEC600 #F7E6DE 720
|
||||||
|
#FEC600 #00AE42 210
|
||||||
|
#FEC600 #5E43B7 900
|
||||||
|
#FEC600 #482960 330
|
||||||
|
#FEC600 #0056B8 900
|
||||||
|
#FEC600 #EC008C 660
|
||||||
|
#FEC600 #F5547C 390
|
||||||
|
#FEC600 #6F5034 330
|
||||||
|
#FEC600 #FF9016 270
|
||||||
|
#FEC600 #00B1B7 630
|
||||||
|
#FEC600 #BECF00 210
|
||||||
|
#EC008C #000000 120
|
||||||
|
#EC008C #FFFFFF 540
|
||||||
|
#EC008C #545454 270
|
||||||
|
#EC008C #8E9089 330
|
||||||
|
#EC008C #C12E1F 120
|
||||||
|
#EC008C #F4EE2A 900
|
||||||
|
#EC008C #0086D6 330
|
||||||
|
#EC008C #00AE42 450
|
||||||
|
#EC008C #5E43B7 210
|
||||||
|
#EC008C #482960 180
|
||||||
|
#EC008C #0056B8 300
|
||||||
|
#EC008C #FEC600 360
|
||||||
|
#EC008C #F5547C 210
|
||||||
|
#EC008C #6F5034 240
|
||||||
|
#EC008C #FF9016 240
|
||||||
|
#EC008C #00B1B7 450
|
||||||
|
#EC008C #BECF00 510
|
||||||
|
#F5547C #000000 120
|
||||||
|
#F5547C #FFFFFF 570
|
||||||
|
#F5547C #545454 210
|
||||||
|
#F5547C #8E9089 240
|
||||||
|
#F5547C #C12E1F 150
|
||||||
|
#F5547C #F4EE2A 750
|
||||||
|
#F5547C #0086D6 270
|
||||||
|
#F5547C #F7E6DE 900
|
||||||
|
#F5547C #00AE42 540
|
||||||
|
#F5547C #5E43B7 150
|
||||||
|
#F5547C #482960 180
|
||||||
|
#F5547C #0056B8 150
|
||||||
|
#F5547C #FEC600 330
|
||||||
|
#F5547C #EC008C 150
|
||||||
|
#F5547C #6F5034 180
|
||||||
|
#F5547C #FF9016 270
|
||||||
|
#F5547C #00B1B7 390
|
||||||
|
#F5547C #BECF00 360
|
||||||
|
#6F5034 #000000 150
|
||||||
|
#6F5034 #FFFFFF 600
|
||||||
|
#6F5034 #545454 150
|
||||||
|
#6F5034 #8E9089 270
|
||||||
|
#6F5034 #C12E1F 180
|
||||||
|
#6F5034 #F4EE2A 360
|
||||||
|
#6F5034 #0086D6 360
|
||||||
|
#6F5034 #F7E6DE 390
|
||||||
|
#6F5034 #00AE42 330
|
||||||
|
#6F5034 #5E43B7 240
|
||||||
|
#6F5034 #482960 180
|
||||||
|
#6F5034 #0056B8 300
|
||||||
|
#6F5034 #FEC600 300
|
||||||
|
#6F5034 #EC008C 270
|
||||||
|
#6F5034 #F5547C 240
|
||||||
|
#6F5034 #FF9016 270
|
||||||
|
#6F5034 #00B1B7 270
|
||||||
|
#6F5034 #BECF00 390
|
||||||
|
#FF9016 #000000 120
|
||||||
|
#FF9016 #FFFFFF 450
|
||||||
|
#FF9016 #545454 240
|
||||||
|
#FF9016 #8E9089 300
|
||||||
|
#FF9016 #C12E1F 150
|
||||||
|
#FF9016 #F4EE2A 480
|
||||||
|
#FF9016 #0086D6 660
|
||||||
|
#FF9016 #F7E6DE 690
|
||||||
|
#FF9016 #00AE42 360
|
||||||
|
#FF9016 #5E43B7 360
|
||||||
|
#FF9016 #482960 210
|
||||||
|
#FF9016 #0056B8 330
|
||||||
|
#FF9016 #FEC600 210
|
||||||
|
#FF9016 #EC008C 240
|
||||||
|
#FF9016 #F5547C 210
|
||||||
|
#FF9016 #6F5034 270
|
||||||
|
#FF9016 #00B1B7 390
|
||||||
|
#FF9016 #BECF00 330
|
||||||
|
#00B1B7 #FFFFFF 630
|
||||||
|
#00B1B7 #8E9089 240
|
||||||
|
#00B1B7 #F4EE2A 390
|
||||||
|
#00B1B7 #EC008C 240
|
||||||
|
#00B1B7 #6F5034 360
|
||||||
|
#00B1B7 #FF9016 300
|
||||||
|
#00B1B7 #00B1B7 390
|
||||||
|
#00B1B7 #BECF00 300
|
||||||
|
#BECF00 #000000 150
|
||||||
|
#BECF00 #FFFFFF 630
|
||||||
|
#BECF00 #8E9089 300
|
||||||
|
#BECF00 #C12E1F 150
|
||||||
|
#BECF00 #F4EE2A 150
|
||||||
|
#BECF00 #0086D6 270
|
||||||
|
#BECF00 #F7E6DE 540
|
||||||
|
#BECF00 #00AE42 150
|
||||||
|
#BECF00 #5E43B7 270
|
||||||
|
#BECF00 #482960 210
|
||||||
|
#BECF00 #0056B8 240
|
||||||
|
#BECF00 #FEC600 120
|
||||||
|
#BECF00 #EC008C 270
|
||||||
|
#BECF00 #F5547C 270
|
||||||
|
#BECF00 #6F5034 150
|
||||||
|
#BECF00 #FF9016 120
|
||||||
|
#BECF00 #00B1B7 330
|
||||||
338
resources/flush/flush_data_dual_standard.txt
Normal file
@@ -0,0 +1,338 @@
|
|||||||
|
colors
|
||||||
|
#000000 #FFFFFF #545454 #8E9089 #C12E1F #F4EE2A #0086D6 #F7E6DE #00AE42 #5E43B7 #482960 #0056B8 #FEC600 #EC008C #F5547C #6F5034 #FF9016 #00B1B7 #BECF00
|
||||||
|
src dst flush
|
||||||
|
#000000 #FFFFFF 900
|
||||||
|
#000000 #545454 450
|
||||||
|
#000000 #8E9089 540
|
||||||
|
#000000 #C12E1F 600
|
||||||
|
#000000 #F4EE2A 900
|
||||||
|
#000000 #0086D6 570
|
||||||
|
#000000 #F7E6DE 900
|
||||||
|
#000000 #00AE42 810
|
||||||
|
#000000 #5E43B7 480
|
||||||
|
#000000 #482960 270
|
||||||
|
#000000 #0056B8 540
|
||||||
|
#000000 #FEC600 900
|
||||||
|
#000000 #EC008C 900
|
||||||
|
#000000 #F5547C 900
|
||||||
|
#000000 #FF9016 900
|
||||||
|
#000000 #00B1B7 630
|
||||||
|
#000000 #BECF00 900
|
||||||
|
#FFFFFF #000000 90
|
||||||
|
#FFFFFF #545454 240
|
||||||
|
#FFFFFF #8E9089 120
|
||||||
|
#FFFFFF #C12E1F 90
|
||||||
|
#FFFFFF #F4EE2A 90
|
||||||
|
#FFFFFF #0086D6 90
|
||||||
|
#FFFFFF #F7E6DE 90
|
||||||
|
#FFFFFF #00AE42 120
|
||||||
|
#FFFFFF #5E43B7 90
|
||||||
|
#FFFFFF #0056B8 90
|
||||||
|
#FFFFFF #FEC600 150
|
||||||
|
#FFFFFF #EC008C 150
|
||||||
|
#FFFFFF #F5547C 120
|
||||||
|
#FFFFFF #6F5034 120
|
||||||
|
#FFFFFF #FF9016 120
|
||||||
|
#FFFFFF #00B1B7 120
|
||||||
|
#FFFFFF #BECF00 90
|
||||||
|
#545454 #000000 90
|
||||||
|
#545454 #FFFFFF 360
|
||||||
|
#545454 #8E9089 120
|
||||||
|
#545454 #C12E1F 270
|
||||||
|
#545454 #F4EE2A 330
|
||||||
|
#545454 #0086D6 270
|
||||||
|
#545454 #F7E6DE 390
|
||||||
|
#545454 #00AE42 270
|
||||||
|
#545454 #5E43B7 120
|
||||||
|
#545454 #482960 150
|
||||||
|
#545454 #0056B8 180
|
||||||
|
#545454 #FEC600 300
|
||||||
|
#545454 #EC008C 240
|
||||||
|
#545454 #F5547C 300
|
||||||
|
#545454 #6F5034 120
|
||||||
|
#545454 #FF9016 240
|
||||||
|
#545454 #00B1B7 270
|
||||||
|
#545454 #BECF00 300
|
||||||
|
#8E9089 #000000 270
|
||||||
|
#8E9089 #FFFFFF 330
|
||||||
|
#8E9089 #545454 300
|
||||||
|
#8E9089 #C12E1F 240
|
||||||
|
#8E9089 #F4EE2A 240
|
||||||
|
#8E9089 #0086D6 240
|
||||||
|
#8E9089 #F7E6DE 390
|
||||||
|
#8E9089 #00AE42 210
|
||||||
|
#8E9089 #5E43B7 270
|
||||||
|
#8E9089 #482960 300
|
||||||
|
#8E9089 #0056B8 180
|
||||||
|
#8E9089 #FEC600 240
|
||||||
|
#8E9089 #EC008C 240
|
||||||
|
#8E9089 #F5547C 240
|
||||||
|
#8E9089 #6F5034 210
|
||||||
|
#8E9089 #FF9016 240
|
||||||
|
#8E9089 #00B1B7 210
|
||||||
|
#8E9089 #BECF00 270
|
||||||
|
#C12E1F #000000 150
|
||||||
|
#C12E1F #FFFFFF 900
|
||||||
|
#C12E1F #545454 300
|
||||||
|
#C12E1F #8E9089 570
|
||||||
|
#C12E1F #F4EE2A 450
|
||||||
|
#C12E1F #0086D6 390
|
||||||
|
#C12E1F #F7E6DE 630
|
||||||
|
#C12E1F #00AE42 420
|
||||||
|
#C12E1F #5E43B7 330
|
||||||
|
#C12E1F #482960 210
|
||||||
|
#C12E1F #0056B8 300
|
||||||
|
#C12E1F #FEC600 660
|
||||||
|
#C12E1F #EC008C 240
|
||||||
|
#C12E1F #F5547C 180
|
||||||
|
#C12E1F #6F5034 210
|
||||||
|
#C12E1F #FF9016 270
|
||||||
|
#C12E1F #00B1B7 540
|
||||||
|
#C12E1F #BECF00 360
|
||||||
|
#F4EE2A #000000 150
|
||||||
|
#F4EE2A #FFFFFF 900
|
||||||
|
#F4EE2A #545454 390
|
||||||
|
#F4EE2A #8E9089 450
|
||||||
|
#F4EE2A #C12E1F 180
|
||||||
|
#F4EE2A #0086D6 270
|
||||||
|
#F4EE2A #F7E6DE 570
|
||||||
|
#F4EE2A #00AE42 120
|
||||||
|
#F4EE2A #5E43B7 330
|
||||||
|
#F4EE2A #482960 330
|
||||||
|
#F4EE2A #0056B8 240
|
||||||
|
#F4EE2A #FEC600 90
|
||||||
|
#F4EE2A #EC008C 330
|
||||||
|
#F4EE2A #F5547C 420
|
||||||
|
#F4EE2A #6F5034 240
|
||||||
|
#F4EE2A #FF9016 150
|
||||||
|
#F4EE2A #00B1B7 360
|
||||||
|
#F4EE2A #BECF00 240
|
||||||
|
#0086D6 #000000 150
|
||||||
|
#0086D6 #FFFFFF 420
|
||||||
|
#0086D6 #545454 120
|
||||||
|
#0086D6 #8E9089 480
|
||||||
|
#0086D6 #C12E1F 240
|
||||||
|
#0086D6 #F4EE2A 360
|
||||||
|
#0086D6 #F7E6DE 390
|
||||||
|
#0086D6 #00AE42 120
|
||||||
|
#0086D6 #5E43B7 150
|
||||||
|
#0086D6 #482960 150
|
||||||
|
#0086D6 #0056B8 120
|
||||||
|
#0086D6 #EC008C 330
|
||||||
|
#0086D6 #F5547C 330
|
||||||
|
#0086D6 #6F5034 150
|
||||||
|
#0086D6 #FF9016 300
|
||||||
|
#0086D6 #00B1B7 150
|
||||||
|
#0086D6 #BECF00 270
|
||||||
|
#F7E6DE #000000 90
|
||||||
|
#F7E6DE #FFFFFF 90
|
||||||
|
#F7E6DE #545454 120
|
||||||
|
#F7E6DE #8E9089 120
|
||||||
|
#F7E6DE #C12E1F 90
|
||||||
|
#F7E6DE #F4EE2A 60
|
||||||
|
#F7E6DE #0086D6 90
|
||||||
|
#F7E6DE #00AE42 90
|
||||||
|
#F7E6DE #5E43B7 90
|
||||||
|
#F7E6DE #482960 120
|
||||||
|
#F7E6DE #0056B8 120
|
||||||
|
#F7E6DE #FEC600 120
|
||||||
|
#F7E6DE #EC008C 150
|
||||||
|
#F7E6DE #F5547C 120
|
||||||
|
#F7E6DE #6F5034 150
|
||||||
|
#F7E6DE #FF9016 120
|
||||||
|
#F7E6DE #00B1B7 90
|
||||||
|
#F7E6DE #BECF00 120
|
||||||
|
#00AE42 #000000 150
|
||||||
|
#00AE42 #FFFFFF 900
|
||||||
|
#00AE42 #545454 240
|
||||||
|
#00AE42 #8E9089 330
|
||||||
|
#00AE42 #C12E1F 210
|
||||||
|
#00AE42 #F4EE2A 270
|
||||||
|
#00AE42 #F7E6DE 360
|
||||||
|
#00AE42 #5E43B7 180
|
||||||
|
#00AE42 #482960 180
|
||||||
|
#00AE42 #0056B8 240
|
||||||
|
#00AE42 #FEC600 300
|
||||||
|
#00AE42 #EC008C 300
|
||||||
|
#00AE42 #F5547C 390
|
||||||
|
#00AE42 #6F5034 180
|
||||||
|
#00AE42 #FF9016 300
|
||||||
|
#00AE42 #00B1B7 360
|
||||||
|
#00AE42 #BECF00 270
|
||||||
|
#5E43B7 #000000 90
|
||||||
|
#5E43B7 #FFFFFF 630
|
||||||
|
#5E43B7 #545454 150
|
||||||
|
#5E43B7 #8E9089 210
|
||||||
|
#5E43B7 #C12E1F 210
|
||||||
|
#5E43B7 #F4EE2A 330
|
||||||
|
#5E43B7 #0086D6 180
|
||||||
|
#5E43B7 #F7E6DE 510
|
||||||
|
#5E43B7 #00AE42 240
|
||||||
|
#5E43B7 #482960 150
|
||||||
|
#5E43B7 #0056B8 120
|
||||||
|
#5E43B7 #FEC600 540
|
||||||
|
#5E43B7 #EC008C 270
|
||||||
|
#5E43B7 #F5547C 420
|
||||||
|
#5E43B7 #6F5034 150
|
||||||
|
#5E43B7 #FF9016 330
|
||||||
|
#5E43B7 #00B1B7 270
|
||||||
|
#5E43B7 #BECF00 330
|
||||||
|
#482960 #000000 90
|
||||||
|
#482960 #FFFFFF 900
|
||||||
|
#482960 #545454 240
|
||||||
|
#482960 #8E9089 510
|
||||||
|
#482960 #C12E1F 360
|
||||||
|
#482960 #F4EE2A 420
|
||||||
|
#482960 #0086D6 330
|
||||||
|
#482960 #F7E6DE 510
|
||||||
|
#482960 #00AE42 390
|
||||||
|
#482960 #5E43B7 270
|
||||||
|
#482960 #0056B8 300
|
||||||
|
#482960 #FEC600 660
|
||||||
|
#482960 #EC008C 360
|
||||||
|
#482960 #F5547C 510
|
||||||
|
#482960 #6F5034 180
|
||||||
|
#482960 #FF9016 540
|
||||||
|
#482960 #00B1B7 450
|
||||||
|
#482960 #BECF00 600
|
||||||
|
#0056B8 #000000 90
|
||||||
|
#0056B8 #FFFFFF 780
|
||||||
|
#0056B8 #545454 270
|
||||||
|
#0056B8 #8E9089 270
|
||||||
|
#0056B8 #C12E1F 330
|
||||||
|
#0056B8 #F4EE2A 630
|
||||||
|
#0056B8 #0086D6 180
|
||||||
|
#0056B8 #F7E6DE 840
|
||||||
|
#0056B8 #00AE42 270
|
||||||
|
#0056B8 #5E43B7 270
|
||||||
|
#0056B8 #482960 150
|
||||||
|
#0056B8 #FEC600 630
|
||||||
|
#0056B8 #EC008C 450
|
||||||
|
#0056B8 #6F5034 240
|
||||||
|
#0056B8 #FF9016 510
|
||||||
|
#0056B8 #00B1B7 240
|
||||||
|
#0056B8 #BECF00 510
|
||||||
|
#FEC600 #000000 90
|
||||||
|
#FEC600 #FFFFFF 900
|
||||||
|
#FEC600 #545454 390
|
||||||
|
#FEC600 #8E9089 600
|
||||||
|
#FEC600 #C12E1F 180
|
||||||
|
#FEC600 #F4EE2A 150
|
||||||
|
#FEC600 #0086D6 330
|
||||||
|
#FEC600 #F7E6DE 600
|
||||||
|
#FEC600 #00AE42 180
|
||||||
|
#FEC600 #5E43B7 270
|
||||||
|
#FEC600 #482960 330
|
||||||
|
#FEC600 #0056B8 300
|
||||||
|
#FEC600 #EC008C 390
|
||||||
|
#FEC600 #F5547C 570
|
||||||
|
#FEC600 #6F5034 240
|
||||||
|
#FEC600 #FF9016 150
|
||||||
|
#FEC600 #00B1B7 510
|
||||||
|
#FEC600 #BECF00 300
|
||||||
|
#EC008C #000000 90
|
||||||
|
#EC008C #FFFFFF 900
|
||||||
|
#EC008C #545454 240
|
||||||
|
#EC008C #8E9089 270
|
||||||
|
#EC008C #C12E1F 120
|
||||||
|
#EC008C #F4EE2A 360
|
||||||
|
#EC008C #0086D6 270
|
||||||
|
#EC008C #F7E6DE 660
|
||||||
|
#EC008C #00AE42 330
|
||||||
|
#EC008C #5E43B7 270
|
||||||
|
#EC008C #482960 270
|
||||||
|
#EC008C #0056B8 210
|
||||||
|
#EC008C #FEC600 510
|
||||||
|
#EC008C #F5547C 120
|
||||||
|
#EC008C #6F5034 180
|
||||||
|
#EC008C #00B1B7 360
|
||||||
|
#EC008C #BECF00 570
|
||||||
|
#F5547C #000000 90
|
||||||
|
#F5547C #FFFFFF 900
|
||||||
|
#F5547C #545454 180
|
||||||
|
#F5547C #8E9089 180
|
||||||
|
#F5547C #C12E1F 150
|
||||||
|
#F5547C #F4EE2A 270
|
||||||
|
#F5547C #0086D6 270
|
||||||
|
#F5547C #F7E6DE 540
|
||||||
|
#F5547C #00AE42 300
|
||||||
|
#F5547C #5E43B7 210
|
||||||
|
#F5547C #482960 240
|
||||||
|
#F5547C #0056B8 210
|
||||||
|
#F5547C #FEC600 330
|
||||||
|
#F5547C #EC008C 120
|
||||||
|
#F5547C #6F5034 180
|
||||||
|
#F5547C #FF9016 150
|
||||||
|
#F5547C #00B1B7 300
|
||||||
|
#F5547C #BECF00 330
|
||||||
|
#6F5034 #000000 180
|
||||||
|
#6F5034 #FFFFFF 660
|
||||||
|
#6F5034 #545454 180
|
||||||
|
#6F5034 #8E9089 240
|
||||||
|
#6F5034 #C12E1F 240
|
||||||
|
#6F5034 #F4EE2A 390
|
||||||
|
#6F5034 #0086D6 330
|
||||||
|
#6F5034 #F7E6DE 420
|
||||||
|
#6F5034 #00AE42 300
|
||||||
|
#6F5034 #5E43B7 300
|
||||||
|
#6F5034 #482960 180
|
||||||
|
#6F5034 #0056B8 300
|
||||||
|
#6F5034 #FEC600 270
|
||||||
|
#6F5034 #EC008C 210
|
||||||
|
#6F5034 #F5547C 240
|
||||||
|
#6F5034 #FF9016 240
|
||||||
|
#6F5034 #00B1B7 270
|
||||||
|
#6F5034 #BECF00 360
|
||||||
|
#FF9016 #FFFFFF 900
|
||||||
|
#FF9016 #545454 240
|
||||||
|
#FF9016 #8E9089 270
|
||||||
|
#FF9016 #C12E1F 150
|
||||||
|
#FF9016 #F4EE2A 330
|
||||||
|
#FF9016 #0086D6 240
|
||||||
|
#FF9016 #F7E6DE 390
|
||||||
|
#FF9016 #00AE42 240
|
||||||
|
#FF9016 #5E43B7 270
|
||||||
|
#FF9016 #482960 180
|
||||||
|
#FF9016 #0056B8 240
|
||||||
|
#FF9016 #FEC600 210
|
||||||
|
#FF9016 #EC008C 210
|
||||||
|
#FF9016 #F5547C 210
|
||||||
|
#FF9016 #6F5034 180
|
||||||
|
#FF9016 #00B1B7 300
|
||||||
|
#FF9016 #BECF00 270
|
||||||
|
#00B1B7 #000000 210
|
||||||
|
#00B1B7 #FFFFFF 480
|
||||||
|
#00B1B7 #545454 300
|
||||||
|
#00B1B7 #8E9089 180
|
||||||
|
#00B1B7 #C12E1F 300
|
||||||
|
#00B1B7 #F4EE2A 300
|
||||||
|
#00B1B7 #0086D6 150
|
||||||
|
#00B1B7 #F7E6DE 390
|
||||||
|
#00B1B7 #00AE42 120
|
||||||
|
#00B1B7 #5E43B7 270
|
||||||
|
#00B1B7 #482960 270
|
||||||
|
#00B1B7 #0056B8 150
|
||||||
|
#00B1B7 #FEC600 330
|
||||||
|
#00B1B7 #EC008C 270
|
||||||
|
#00B1B7 #F5547C 270
|
||||||
|
#00B1B7 #6F5034 210
|
||||||
|
#00B1B7 #FF9016 270
|
||||||
|
#00B1B7 #BECF00 240
|
||||||
|
#BECF00 #000000 270
|
||||||
|
#BECF00 #FFFFFF 450
|
||||||
|
#BECF00 #545454 270
|
||||||
|
#BECF00 #8E9089 270
|
||||||
|
#BECF00 #C12E1F 150
|
||||||
|
#BECF00 #F4EE2A 90
|
||||||
|
#BECF00 #0086D6 300
|
||||||
|
#BECF00 #F7E6DE 300
|
||||||
|
#BECF00 #00AE42 180
|
||||||
|
#BECF00 #5E43B7 270
|
||||||
|
#BECF00 #482960 210
|
||||||
|
#BECF00 #0056B8 240
|
||||||
|
#BECF00 #FEC600 210
|
||||||
|
#BECF00 #EC008C 240
|
||||||
|
#BECF00 #F5547C 150
|
||||||
|
#BECF00 #6F5034 150
|
||||||
|
#BECF00 #FF9016 150
|
||||||
|
#BECF00 #00B1B7 270
|
||||||
61
resources/flush/flush_data_standard.txt
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
colors
|
||||||
|
#000000 #C12E1F #00AE42 #545454 #D1D3D5 #5B6579 #F4EE2A #9D432C #5E43B7 #0A2989 #FF6A13 #8E9089
|
||||||
|
src dst flush
|
||||||
|
#000000 #F4EE2A 450
|
||||||
|
#000000 #5E43B7 330
|
||||||
|
#C12E1F #F4EE2A 420
|
||||||
|
#C12E1F #FF6A13 210
|
||||||
|
#00AE42 #D1D3D5 330
|
||||||
|
#00AE42 #F4EE2A 240
|
||||||
|
#00AE42 #FF6A13 270
|
||||||
|
#545454 #00AE42 180
|
||||||
|
#545454 #D1D3D5 240
|
||||||
|
#545454 #F4EE2A 270
|
||||||
|
#545454 #5E43B7 120
|
||||||
|
#545454 #FF6A13 300
|
||||||
|
#545454 #8E9089 120
|
||||||
|
#D1D3D5 #F4EE2A 120
|
||||||
|
#D1D3D5 #FF6A13 150
|
||||||
|
#5B6579 #C12E1F 120
|
||||||
|
#5B6579 #00AE42 90
|
||||||
|
#5B6579 #D1D3D5 120
|
||||||
|
#5B6579 #F4EE2A 180
|
||||||
|
#5B6579 #9D432C 120
|
||||||
|
#5B6579 #0A2989 90
|
||||||
|
#5B6579 #FF6A13 180
|
||||||
|
#5B6579 #8E9089 90
|
||||||
|
#F4EE2A #000000 120
|
||||||
|
#F4EE2A #C12E1F 90
|
||||||
|
#F4EE2A #00AE42 150
|
||||||
|
#F4EE2A #9D432C 150
|
||||||
|
#F4EE2A #FF6A13 90
|
||||||
|
#9D432C #00AE42 240
|
||||||
|
#9D432C #D1D3D5 300
|
||||||
|
#9D432C #F4EE2A 270
|
||||||
|
#9D432C #FF6A13 180
|
||||||
|
#9D432C #8E9089 210
|
||||||
|
#5E43B7 #00AE42 180
|
||||||
|
#5E43B7 #D1D3D5 270
|
||||||
|
#5E43B7 #F4EE2A 270
|
||||||
|
#5E43B7 #9D432C 150
|
||||||
|
#5E43B7 #FF6A13 270
|
||||||
|
#5E43B7 #8E9089 210
|
||||||
|
#0A2989 #C12E1F 330
|
||||||
|
#0A2989 #00AE42 210
|
||||||
|
#0A2989 #545454 150
|
||||||
|
#0A2989 #D1D3D5 450
|
||||||
|
#0A2989 #5B6579 240
|
||||||
|
#0A2989 #9D432C 270
|
||||||
|
#0A2989 #5E43B7 180
|
||||||
|
#0A2989 #FF6A13 390
|
||||||
|
#0A2989 #8E9089 270
|
||||||
|
#FF6A13 #C12E1F 90
|
||||||
|
#FF6A13 #D1D3D5 210
|
||||||
|
#FF6A13 #F4EE2A 210
|
||||||
|
#FF6A13 #9D432C 120
|
||||||
|
#FF6A13 #8E9089 180
|
||||||
|
#8E9089 #C12E1F 150
|
||||||
|
#8E9089 #00AE42 120
|
||||||
|
#8E9089 #D1D3D5 150
|
||||||
|
#8E9089 #F4EE2A 270
|
||||||
|
#8E9089 #FF6A13 150
|
||||||
BIN
resources/fonts/NanumGothic-Bold.ttf
Normal file
BIN
resources/fonts/NanumGothic-Regular.ttf
Normal file
BIN
resources/fonts/SourceHanSansJP-Bold.otf
Normal file
BIN
resources/fonts/SourceHanSansJP-Normal.otf
Normal file
3
resources/images/L.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<circle cx="7.77482" cy="7.85898" r="7.70859" fill="#262E30"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 166 B |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 9.8 KiB |
1
resources/images/QIDIStudioBlack.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="11.8100004196167" height="12" viewBox="0 0 11.8100004196167 12"><defs><clipPath id="master_svg0_2688_67072"><rect x="0" y="0" width="11.8100004196167" height="12" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_2688_67072)"><g><path d="M7.15,9.68L7.15,7.13C7.15,6.96,7.24,6.8,7.39,6.72L9.48,5.51L10.44,4.96L10.44,3.41C10.44,3.07,10.26,2.75,9.96,2.58L5.7,0.13C5.4,-0.04,5.04,-0.04,4.74,0.13L0.48,2.59C0.18,2.76,0,3.08,0,3.42L0,8.34C0,8.68,0.18,9,0.48,9.17L4.74,11.63C5.04,11.8,5.4,11.8,5.7,11.63L7.16,10.79L7.16,9.68L7.15,9.68ZM5.69,5.05C5.39,5.22,5.21,5.54,5.21,5.88L5.21,9.97C5.21,10.34,4.81,10.57,4.49,10.38L1.18,8.47C1.03,8.38,0.94,8.23,0.94,8.06L0.94,3.69C0.94,3.52,1.03,3.36,1.18,3.28L4.96,1.1C5.11,1.01,5.29,1.01,5.44,1.1L8.27,2.73C8.59,2.91,8.59,3.37,8.27,3.56L5.68,5.06L5.69,5.05Z" fill="#212322" fill-opacity="1" style="mix-blend-mode:passthrough"/></g><g><path d="M11.090000095367431,4.590000153192139L10.44000009536743,4.970000553192139L10.44000009536743,8.630001553192137C10.44000009536743,8.80000155319214,10.350000095367431,8.950001553192138,10.200000095367432,9.03000155319214L10.150000095367432,9.060001553192139L10.080000095367431,9.10000155319214L9.480000095367432,9.450001553192138L9.090000095367431,9.670001553192138L7.150000095367432,10.790001553192138L7.150000095367432,11.490001553192139L7.150000095367432,11.520001553192138C7.150000095367432,11.880001553192137,7.5300000953674315,12.10000155319214,7.850000095367432,11.94000155319214L7.870000095367431,11.94000155319214L8.250000095367431,11.71000155319214L11.560000095367432,9.790001553192138C11.71000009536743,9.700001553192138,11.800000095367432,9.55000155319214,11.800000095367432,9.380001553192137L11.800000095367432,4.999999553192139C11.800000095367432,4.630000553192139,11.400000095367432,4.400000553192139,11.080000095367431,4.590000153192139L11.090000095367431,4.590000153192139Z" fill="#212322" fill-opacity="1" style="mix-blend-mode:passthrough"/></g></g></svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
3
resources/images/R.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<circle cx="7.77482" cy="8.025" r="7.70859" fill="#262E30"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 164 B |
1
resources/images/add_copies.svg
Normal file
@@ -0,0 +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:1"/></svg>
|
||||||
|
After Width: | Height: | Size: 346 B |
1
resources/images/add_text_modifier.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M6.5,14.5a1,1,0,0,1-1-1v-9h-4a1,1,0,0,1-1-1v-2a1,1,0,0,1,1-1h12a1,1,0,0,1,1,1v2a1,1,0,0,1-1,1h-4v2" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/><line x1="8.5" y1="8.5" x2="14.5" y2="14.5" style="fill:none;stroke:#009688;stroke-linejoin:round"/><line x1="14.5" y1="8.5" x2="8.5" y2="14.5" style="fill:none;stroke:#009688;stroke-linejoin:round"/><line x1="11.5" y1="8.5" x2="11.5" y2="14.5" style="fill:none;stroke:#009688;stroke-linecap:square;stroke-linejoin:round"/><line x1="14.5" y1="11.5" x2="8.5" y2="11.5" style="fill:none;stroke:#009688;stroke-linecap:square;stroke-linejoin:round"/></svg>
|
||||||
|
After Width: | Height: | Size: 721 B |
1
resources/images/add_text_negative.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M6.5,14.5a1,1,0,0,1-1-1v-9h-4a1,1,0,0,1-1-1v-2a1,1,0,0,1,1-1h12a1,1,0,0,1,1,1v2a1,1,0,0,1-1,1h-4v2" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/><path d="M15,11.5A3.5,3.5,0,1,1,11.5,8,3.5,3.5,0,0,1,15,11.5ZM14,11H9v1h5Z" style="fill:#009688"/></svg>
|
||||||
|
After Width: | Height: | Size: 373 B |
1
resources/images/add_text_part.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M6.5,14.5a1,1,0,0,1-1-1v-9h-4a1,1,0,0,1-1-1v-2a1,1,0,0,1,1-1h12a1,1,0,0,1,1,1v2a1,1,0,0,1-1,1h-4v2" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/><path d="M15,11.5A3.5,3.5,0,1,1,11.5,8,3.5,3.5,0,0,1,15,11.5ZM14,11H12V9H11v2H9v1h2v2h1V12h2Z" style="fill:#009688"/></svg>
|
||||||
|
After Width: | Height: | Size: 392 B |