Compare commits
115 Commits
v1.10.01.5
...
v2.04.00.7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c213cf00c | ||
|
|
682d7fa8c2 | ||
|
|
984eab839f | ||
|
|
97dcb7faee | ||
|
|
07f3f57ff9 | ||
|
|
af515a1dd8 | ||
|
|
0d7743b677 | ||
|
|
671ddc1a6a | ||
|
|
2ed80815f0 | ||
|
|
37c90ca9ab | ||
|
|
a7c46d239e | ||
|
|
0235484d93 | ||
|
|
6d18e77544 | ||
|
|
374619bf24 | ||
|
|
79257f9f9c | ||
|
|
a8f256aaa0 | ||
|
|
c94ff49059 | ||
|
|
5d5b4e9d63 | ||
|
|
7f8ce1141c | ||
|
|
c23ce3c50a | ||
|
|
1a5e691672 | ||
|
|
1078fe3389 | ||
|
|
50572b196e | ||
|
|
69be99b00a | ||
|
|
328f91afc2 | ||
|
|
408593c742 | ||
|
|
e2c100f32d | ||
|
|
d68307db4f | ||
|
|
0acf5a33a2 | ||
|
|
923263352a | ||
|
|
8cdbd765df | ||
|
|
8ce31ed7e1 | ||
|
|
2809d34cb6 | ||
|
|
82268132e9 | ||
|
|
81ea36fdd8 | ||
|
|
96cf7d2194 | ||
|
|
7878c0d2f4 | ||
|
|
6db0e20de9 | ||
|
|
300b4e046d | ||
|
|
9ffbc2c959 | ||
|
|
d8620a4d4d | ||
|
|
6b46f9fd48 | ||
|
|
71252cf326 | ||
|
|
6ec016a6f8 | ||
|
|
8177bf8912 | ||
|
|
523aea89af | ||
|
|
f16489db9c | ||
|
|
56232999f5 | ||
|
|
4648145b67 | ||
|
|
89a8103bad | ||
|
|
5cdfef9f9e | ||
|
|
0c78224f1a | ||
|
|
eec6d77112 | ||
|
|
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 |
148
.github/workflows/main.yml
vendored
Normal file
@@ -0,0 +1,148 @@
|
||||
name: QIDIStudio-CI
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
main:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, windows-2022, macos-15-intel]
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- name: Setup MSBUILD
|
||||
if: startsWith(matrix.os, 'windows-')
|
||||
uses: microsoft/setup-msbuild@v2
|
||||
with:
|
||||
vs-version: '[17.0,18.0)'
|
||||
|
||||
- name: Setup libraries on linux
|
||||
if: startsWith(matrix.os, 'ubuntu-')
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
build-essential \
|
||||
cmake \
|
||||
extra-cmake-modules \
|
||||
libglu1-mesa-dev \
|
||||
libgtk-3-dev \
|
||||
libdbus-1-dev \
|
||||
libwebkit2gtk-4.1-dev \
|
||||
libboost*1.74-dev \
|
||||
libglfw3-dev \
|
||||
libnlopt*-dev \
|
||||
libtbb-dev \
|
||||
nasm \
|
||||
libgstreamer1.0-dev \
|
||||
libgstreamer-plugins-base1.0-dev \
|
||||
libgstreamer-plugins-bad1.0-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libosmesa6-dev
|
||||
|
||||
- name: Setup libraries on Mac
|
||||
if: startsWith(matrix.os, 'macos-')
|
||||
run: |
|
||||
brew update
|
||||
export HOMEBREW_NO_INSTALL_FROM_API=1
|
||||
sed -i '' -e 's/disable!/#disable!/' /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/i/icu4c@74.rb
|
||||
curl https://raw.githubusercontent.com/Homebrew/homebrew-core/aba405a30fa1a608a12adeb56bea8e1c5975a42d/Formula/b/boost%401.76.rb > /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/b/boost@1.76.rb
|
||||
sed -i '' -e 's#https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2#https://archives.boost.io/release/1.76.0/source/boost_1_76_0.tar.bz2#' /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/b/boost@1.76.rb
|
||||
brew install \
|
||||
icu4c@74 \
|
||||
boost@1.76 \
|
||||
automake \
|
||||
git \
|
||||
nasm \
|
||||
tbb \
|
||||
texinfo \
|
||||
zlib
|
||||
|
||||
- name: Setup PkgConfig
|
||||
if: startsWith(matrix.os, 'windows-')
|
||||
run: choco install pkgconfiglite -y
|
||||
|
||||
- name: Setup CMake
|
||||
uses: ssrobins/install-cmake@v1
|
||||
with:
|
||||
version: 3.31.6
|
||||
|
||||
- name: Setup Perl
|
||||
uses: shogo82148/actions-setup-perl@v1.36.0
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Build Dependencies on Windows
|
||||
if: startsWith(matrix.os, 'windows-')
|
||||
shell: cmd
|
||||
run: |
|
||||
set CMAKE_TLS_VERIFY=0
|
||||
cd deps
|
||||
mkdir build
|
||||
cd build
|
||||
mkdir QIDIStudio_dep
|
||||
cmake ../ -G "Visual Studio 17 2022" -DDESTDIR="./QIDIStudio_dep" -DCMAKE_BUILD_TYPE=Release
|
||||
msbuild /m ALL_BUILD.vcxproj
|
||||
|
||||
- name: Build QIDI Studio on Windows
|
||||
if: startsWith(matrix.os, 'windows-')
|
||||
shell: cmd
|
||||
run: |
|
||||
mkdir install_dir
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -G "Visual Studio 17 2022" -DQDT_RELEASE_TO_PUBLIC=0 -DCMAKE_PREFIX_PATH="${{ github.workspace }}\deps\build\QIDIStudio_dep\usr\local" -DCMAKE_INSTALL_PREFIX="../install_dir" -DCMAKE_BUILD_TYPE=Release -DWIN10SDK_PATH="C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0"
|
||||
cmake --build . --target install --config Release
|
||||
|
||||
- name: Build QIDI Studio on Linux
|
||||
if: startsWith(matrix.os, 'ubuntu-')
|
||||
run: |
|
||||
export CMAKE_TLS_VERIFY=0
|
||||
sed -i "s/-DQDT_INTERNAL_TESTING=0/-DQDT_INTERNAL_TESTING=1 -DQDT_RELEASE_TO_PUBLIC=0/" BuildLinux.sh
|
||||
chmod +x BuildLinux.sh
|
||||
./BuildLinux.sh -dsi
|
||||
|
||||
- name: Build QIDI Studio on MacOS
|
||||
if: startsWith(matrix.os, 'macos-')
|
||||
run: |
|
||||
export CMAKE_TLS_VERIFY=0
|
||||
export PATH="/usr/local/opt/curl/bin:$PATH"
|
||||
export PATH="/usr/local/opt/icu4c@78/bin:$PATH"
|
||||
export PATH="/usr/local/opt/icu4c@78/sbin:$PATH"
|
||||
export LDFLAGS="-L/usr/local/opt/curl/lib -L/usr/local/opt/boost@1.76/lib -L/usr/local/opt/icu4c@78/lib -L/usr/local/opt/zlib/lib -L/usr/local/opt/zstd/lib"
|
||||
export CPPFLAGS="-I/usr/local/opt/curl/include -I/usr/local/opt/boost@1.76/include -I/usr/local/opt/icu4c@78/include -I/usr/local/opt/zlib/include -I/usr/local/opt/zstd/include"
|
||||
export PKG_CONFIG_PATH="/usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/boost@1.76/lib/pkgconfig:/usr/local/opt/icu4c@78/lib/pkgconfig:/usr/local/opt/zlib/lib/pkgconfig://usr/local/opt/zstd/lib/pkgconfig"
|
||||
export CMAKE_PREFIX_PATH="/usr/local/opt/boost@1.76;/usr/local/opt/curl;/usr/local/opt/icu4c@78"
|
||||
sed -i '' -e 's/-DCMAKE_PREFIX_PATH="$DEPS/-DCMAKE_PREFIX_PATH="$CMAKE_PREFIX_PATH;$DEPS/' BuildMac.sh
|
||||
sed -i '' -e 's/-DQDT_INTERNAL_TESTING=0/-DQDT_INTERNAL_TESTING=1/' BuildMac.sh
|
||||
sed -i '' -e 's/-DQDT_RELEASE_TO_PUBLIC=1/-DQDT_RELEASE_TO_PUBLIC=0/' BuildMac.sh
|
||||
chmod +x BuildMac.sh
|
||||
./BuildMac.sh -t 14.0 -x
|
||||
|
||||
- name: Upload Artifacts on Windows
|
||||
if: startsWith(matrix.os, 'windows-')
|
||||
uses: actions/upload-artifact@v5.0.0
|
||||
with:
|
||||
name: QIDIStudio_windows
|
||||
path: install_dir
|
||||
|
||||
- name: Upload Artifacts on MacOS
|
||||
if: startsWith(matrix.os, 'macos-')
|
||||
uses: actions/upload-artifact@v5.0.0
|
||||
with:
|
||||
name: QIDIStudio_macos
|
||||
path: build/x86_64/QIDIStudio/QIDIStudio.app/
|
||||
|
||||
- name: Upload Artifacts on Linux
|
||||
if: startsWith(matrix.os, 'ubuntu-')
|
||||
uses: actions/upload-artifact@v5.0.0
|
||||
with:
|
||||
name: QIDIStudio_linux
|
||||
path: build/QIDIStudio.tar
|
||||
|
||||
- name: Upload Artifacts on Linux - Appimage
|
||||
if: startsWith(matrix.os, 'ubuntu-')
|
||||
uses: actions/upload-artifact@v5.0.0
|
||||
with:
|
||||
name: QIDIStudio_AppImage
|
||||
path: build/QIDIStudio_ubu64.AppImage
|
||||
5
.gitignore
vendored
@@ -27,3 +27,8 @@ SVG
|
||||
**/process_full/
|
||||
**/machine_full/
|
||||
**/filament_full/
|
||||
.idea/
|
||||
test.js
|
||||
/.cache/
|
||||
.clangd
|
||||
/src/slic3r/QIDI/
|
||||
@@ -84,17 +84,26 @@ fi
|
||||
|
||||
DISTRIBUTION=$(awk -F= '/^ID=/ {print $2}' /etc/os-release)
|
||||
VERSION=$(awk -F= '/^VERSION_ID=/ {print $2}' /etc/os-release)
|
||||
# treat ubuntu as debian
|
||||
if [ "${DISTRIBUTION}" == "ubuntu" ]
|
||||
then
|
||||
DISTRIBUTION="debian"
|
||||
fi
|
||||
if [ ! -f ./linux.d/${DISTRIBUTION} ]
|
||||
# OSLIKE is a space-delineated list of similar distributions
|
||||
OSLIKE=$(awk -F= '/^ID_LIKE=/ {print $2}' /etc/os-release | tr -d '"')
|
||||
|
||||
# Iterate over a list of candidate distribution targets, first match is used
|
||||
for CANDIDATE in ${DISTRIBUTION} ${OSLIKE}; do
|
||||
if [ -f ./linux.d/${CANDIDATE} ]
|
||||
then
|
||||
TARGET_DISTRO="${CANDIDATE}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z ${TARGET_DISTRO} ]
|
||||
then
|
||||
echo "Your distribution does not appear to be currently supported by these build scripts"
|
||||
exit 1
|
||||
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}"
|
||||
if [[ -z "${FOUND_GTK3_DEV}" ]]
|
||||
|
||||
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
|
||||
@@ -1,4 +1,10 @@
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
# The CMake version on Windows must not be greater than 4.0.
|
||||
if ( ((MSVC) OR (WIN32)) AND (${CMAKE_VERSION} VERSION_GREATER_EQUAL "4.0") )
|
||||
message(FATAL_ERROR "Only cmake versions between 3.13.x and 4.0.x is supported on windows. Detected version: ${CMAKE_VERSION}")
|
||||
endif()
|
||||
|
||||
project(QIDIStudio)
|
||||
|
||||
include("version.inc")
|
||||
@@ -44,6 +50,7 @@ set(IS_CROSS_COMPILE FALSE)
|
||||
|
||||
set(FLATPAK FALSE CACHE BOOL "Not copy FFMPEG file")
|
||||
|
||||
|
||||
if (APPLE)
|
||||
set(CMAKE_FIND_FRAMEWORK LAST)
|
||||
set(CMAKE_FIND_APPBUNDLE LAST)
|
||||
@@ -54,7 +61,10 @@ if (APPLE)
|
||||
if (CMAKE_MACOSX_BUNDLE)
|
||||
set(CMAKE_INSTALL_RPATH @executable_path/../Frameworks)
|
||||
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 ()
|
||||
@@ -170,6 +180,18 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
# 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
|
||||
if(WIN32)
|
||||
if(EXISTS "${CMAKE_SOURCE_DIR}/scripts/hooks/pre-commit" AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
||||
if(IS_DIRECTORY "${CMAKE_SOURCE_DIR}/.git")
|
||||
message(STATUS ".git: directory")
|
||||
configure_file(
|
||||
"${CMAKE_SOURCE_DIR}/scripts/hooks/pre-commit"
|
||||
"${CMAKE_SOURCE_DIR}/.git/hooks/pre-commit"
|
||||
)
|
||||
else()
|
||||
message(STATUS "skip pre-commit git hook")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
if(NOT DEFINED WIN10SDK_PATH)
|
||||
if(DEFINED ENV{WIN10SDK_PATH})
|
||||
@@ -238,6 +260,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.
|
||||
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)
|
||||
# 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)
|
||||
@@ -251,6 +275,10 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP
|
||||
add_compile_options(-Wno-deprecated-declarations)
|
||||
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
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66943 or
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431
|
||||
@@ -305,7 +333,7 @@ if(WIN32)
|
||||
add_definitions(-D_USE_MATH_DEFINES -D_WIN32 -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS)
|
||||
if(MSVC)
|
||||
# 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
|
||||
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
|
||||
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
|
||||
@@ -347,7 +375,7 @@ endif()
|
||||
# set(Boost_COMPILER "-mgw81")
|
||||
# boost::process was introduced first in version 1.64.0,
|
||||
# boost::beast::detail::base64 was introduced first in version 1.66.0
|
||||
set(MINIMUM_BOOST_VERSION "1.66.0")
|
||||
set(MINIMUM_BOOST_VERSION "1.83.0")
|
||||
set(_boost_components "system;filesystem;thread;log;locale;regex;chrono;atomic;date_time;iostreams")
|
||||
find_package(Boost ${MINIMUM_BOOST_VERSION} REQUIRED COMPONENTS ${_boost_components})
|
||||
|
||||
@@ -366,7 +394,7 @@ endif()
|
||||
function(slic3r_remap_configs targets from_Cfg to_Cfg)
|
||||
if(MSVC)
|
||||
string(TOUPPER ${from_Cfg} from_CFG)
|
||||
|
||||
|
||||
foreach(tgt ${targets})
|
||||
if(TARGET ${tgt})
|
||||
set_target_properties(${tgt} PROPERTIES MAP_IMPORTED_CONFIG_${from_CFG} ${to_Cfg})
|
||||
@@ -504,7 +532,7 @@ find_package(cereal REQUIRED)
|
||||
set(L10N_DIR "${SLIC3R_RESOURCES_DIR}/i18n")
|
||||
set(QDT_L18N_DIR "${CMAKE_CURRENT_SOURCE_DIR}/qdt/i18n")
|
||||
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"
|
||||
-o "${QDT_L18N_DIR}/QIDIStudio.pot"
|
||||
COMMAND hintsToPot ${SLIC3R_RESOURCES_DIR} ${QDT_L18N_DIR}
|
||||
@@ -521,7 +549,7 @@ foreach(po_file ${QDT_L10N_PO_FILES})
|
||||
SET(po_new_file "${po_dir}/QIDIStudio_.po")
|
||||
add_custom_command(
|
||||
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}
|
||||
)
|
||||
endforeach()
|
||||
@@ -543,12 +571,12 @@ foreach(po_file ${QDT_L10N_PO_FILES})
|
||||
endforeach()
|
||||
|
||||
# copy pt-BR/QidiStudio.mo to pt_br/
|
||||
SET(PT_BR "${L10N_DIR}/pt-BR/QIDIStudio.mo")
|
||||
SET(PT_BR_DST "${L10N_DIR}/pt_br/")
|
||||
add_custom_command(
|
||||
TARGET gettext_po_to_mo POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PT_BR} ${PT_BR_DST}
|
||||
)
|
||||
#SET(PT_BR "${L10N_DIR}/pt-BR/QIDIStudio.mo")
|
||||
#SET(PT_BR_DST "${L10N_DIR}/pt_br/")
|
||||
#add_custom_command(
|
||||
# TARGET gettext_po_to_mo POST_BUILD
|
||||
# COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PT_BR} ${PT_BR_DST}
|
||||
#)
|
||||
|
||||
find_package(NLopt 1.4 REQUIRED)
|
||||
|
||||
@@ -668,7 +696,7 @@ function(qidistudio_copy_dlls target config postfix output_dlls)
|
||||
${_out_dir}/avutil-59.dll
|
||||
PARENT_SCOPE
|
||||
)
|
||||
|
||||
|
||||
endfunction()
|
||||
|
||||
function(qidistudio_copy_sos target config postfix output_sos)
|
||||
|
||||
@@ -1,15 +1,73 @@
|
||||
#!/bin/bash
|
||||
PROJECT_ROOT=$(cd -P -- "$(dirname -- "$0")" && printf '%s\n' "$(pwd -P)")
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
# Wishlist hint: For developers, creating a Docker Compose
|
||||
# setup with persistent volumes for the build & deps directories
|
||||
# would speed up recompile times significantly. For end users,
|
||||
# the simplicity of a single Docker image and a one-time compilation
|
||||
# seems better.
|
||||
docker build -t qidistudio \
|
||||
--build-arg USER=$USER \
|
||||
--build-arg UID=$(id -u) \
|
||||
--build-arg GID=$(id -g) \
|
||||
$PROJECT_ROOT
|
||||
function usage() {
|
||||
echo "Usage: ./DockerBuild.sh [-c][-d][-i][-v]"
|
||||
echo " -c: Build a self-contained Docker image that can be run directly"
|
||||
echo " -d: disable safe parallel number limit(By default, the maximum number of parallels is set to free memory/2.5)"
|
||||
echo " -i: Build and export an AppImage"
|
||||
echo " -v: Build System Version:ubu22 or ubu24"
|
||||
echo " -h: this help output"
|
||||
echo "If you only need to run the program on a built Docker container, just use './DockerBuild.sh -c'"
|
||||
echo "If you need to build an AppImage using Docker, first run './DockerBuild.sh -d', then run './DockerBuild.sh -s'."
|
||||
}
|
||||
|
||||
unset name
|
||||
while getopts "hcdiv:" opt; do
|
||||
case ${opt} in
|
||||
c )
|
||||
BUILD_RUNNER=1
|
||||
;;
|
||||
d )
|
||||
BUILD_DEPS=1
|
||||
;;
|
||||
i )
|
||||
BUILD_APPIMAGE=1
|
||||
;;
|
||||
v )
|
||||
SYSTEM_VERSION="$OPTARG"
|
||||
;;
|
||||
h ) usage
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z "$SYSTEM_VERSION" ]; then
|
||||
SYSTEM_VERSION="ubu22"
|
||||
fi
|
||||
|
||||
if [[ -n "${BUILD_DEPS}" ]]; then
|
||||
if [ "$SYSTEM_VERSION" == "ubu22" ]; then
|
||||
echo "Building dependencies for Ubuntu 22.04..."
|
||||
docker build -f docker/BuildDepsDockerfile -t studio_dep_22:1.0 .
|
||||
else
|
||||
docker build -f docker/BuildDepsDockerfile24 -t studio_dep_24:1.0 .
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n "${BUILD_APPIMAGE}" ]]; then
|
||||
if [ "$SYSTEM_VERSION" == "ubu22" ]; then
|
||||
docker build -f docker/BuildAppimageDockerfile --build-arg VERSION=studio_dep_22 -o type=local,dest=./build .
|
||||
mv build/QIDIStudio_ubu64.AppImage build/QIDIStudio_ubu22.AppImage
|
||||
else
|
||||
docker build -f docker/BuildAppimageDockerfile --build-arg VERSION=studio_dep_24 -o type=local,dest=./build .
|
||||
mv build/QIDIStudio_ubu64.AppImage build/QIDIStudio_ubu24.AppImage
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n "${BUILD_RUNNER}" ]]
|
||||
then
|
||||
# Wishlist hint: For developers, creating a Docker Compose
|
||||
# setup with persistent volumes for the build & deps directories
|
||||
# would speed up recompile times significantly. For end users,
|
||||
# the simplicity of a single Docker image and a one-time compilation
|
||||
# seems better.
|
||||
docker build -t qidistudio \
|
||||
--build-arg USER=${USER:-root} \
|
||||
--build-arg UID=$(id -u) \
|
||||
--build-arg GID=$(id -g) \
|
||||
$PROJECT_ROOT
|
||||
fi
|
||||
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 \
|
||||
# If there's problems with the X display, try this
|
||||
# -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 \
|
||||
`# Use the hosts networking. Printer wifi and also dbus communication` \
|
||||
--net=host \
|
||||
`# Some X installs will not have permissions to talk to sockets for shared memory` \
|
||||
--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` \
|
||||
-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` \
|
||||
-e DISPLAY=$DISPLAY \
|
||||
`# It seems that libGL and dbus things need privileged mode` \
|
||||
@@ -24,4 +33,3 @@ docker run \
|
||||
--rm \
|
||||
`# Pass all parameters from this script to the qidi ENTRYPOINT binary` \
|
||||
qidistudio $*
|
||||
|
||||
|
||||
79
Dockerfile
@@ -1,5 +1,4 @@
|
||||
FROM docker.io/ubuntu:22.04
|
||||
LABEL maintainer "DeftDawg <DeftDawg@gmail.com>"
|
||||
FROM docker.io/ubuntu:24.10
|
||||
|
||||
# Disable interactive package configuration
|
||||
RUN apt-get update && \
|
||||
@@ -14,6 +13,7 @@ RUN apt-get update && apt-get install -y \
|
||||
build-essential \
|
||||
cmake \
|
||||
curl \
|
||||
xvfb \
|
||||
eglexternalplatform-dev \
|
||||
extra-cmake-modules \
|
||||
file \
|
||||
@@ -39,7 +39,6 @@ RUN apt-get update && apt-get install -y \
|
||||
libssl-dev \
|
||||
libudev-dev \
|
||||
libwayland-dev \
|
||||
libwebkit2gtk-4.0-dev \
|
||||
libxkbcommon-dev \
|
||||
locales \
|
||||
locales-all \
|
||||
@@ -47,6 +46,7 @@ RUN apt-get update && apt-get install -y \
|
||||
pkgconf \
|
||||
sudo \
|
||||
wayland-protocols \
|
||||
libwebkit2gtk-4.1-dev \
|
||||
wget
|
||||
|
||||
# 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
|
||||
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
|
||||
# Update System dependencies
|
||||
WORKDIR /QIDIStudio
|
||||
|
||||
# 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 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
|
||||
RUN ./BuildLinux.sh -d
|
||||
|
||||
@@ -73,22 +114,20 @@ RUN ./BuildLinux.sh -d
|
||||
RUN ./BuildLinux.sh -s
|
||||
|
||||
# Build AppImage
|
||||
ENV container podman
|
||||
ENV container=podman
|
||||
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
|
||||
# your home directory into the container, it's handy
|
||||
# to keep permissions the same. Just in case, defaults
|
||||
# are root.
|
||||
|
||||
# Use bash as the shell
|
||||
SHELL ["/bin/bash", "-l", "-c"]
|
||||
ARG USER=root
|
||||
ARG UID=0
|
||||
ARG GID=0
|
||||
RUN [[ "$UID" != "0" ]] \
|
||||
&& groupadd -f -g $GID $USER \
|
||||
&& useradd -u $UID -g $GID $USER
|
||||
|
||||
# Point FFMPEG Library search to the binary built upon QIDIStudio build time
|
||||
ENV LD_LIBRARY_PATH=/QIDIStudio/build/package/bin
|
||||
|
||||
# Using an entrypoint instead of CMD because the binary
|
||||
# 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">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>${MACOSX_BUNDLE_INFO_STRING}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.qiditech.qidi-studio</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleLongVersionString</key>
|
||||
<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>${MACOSX_BUNDLE_INFO_STRING}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.qiditech.qidi-studio</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleLongVersionString</key>
|
||||
<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
|
||||
127
deps/Boost/0001-FIX-OBS-cannot-start-streaming-on-MAC.patch
vendored
Normal file
@@ -0,0 +1,127 @@
|
||||
From 45d9cd6bdba9b829fcfe40ff7c5f3f786afd41e1 Mon Sep 17 00:00:00 2001
|
||||
From: "changyu.chen" <changyu.chen@bambulab.com>
|
||||
Date: Fri, 7 Nov 2025 10:15:47 +0800
|
||||
Subject: [PATCH] FIX: OBS cannot start streaming on MAC
|
||||
|
||||
jira: [STUDIO-14205]
|
||||
|
||||
Change-Id: I3f7c7982737b3b52729df856bc0cf69d89d1820d
|
||||
---
|
||||
.../include/boost/process/detail/posix/executor.hpp | 3 ++-
|
||||
.../include/boost/process/detail/posix/pipe_out.hpp | 13 +++++++++++--
|
||||
.../include/boost/process/detail/used_handles.hpp | 3 +++
|
||||
.../boost/process/detail/windows/handles.hpp | 10 +++++++---
|
||||
4 files changed, 23 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/usr/local/include/boost/process/detail/posix/executor.hpp b/usr/local/include/boost/process/detail/posix/executor.hpp
|
||||
index c4d99906..4d9b47ba 100644
|
||||
--- a/usr/local/include/boost/process/detail/posix/executor.hpp
|
||||
+++ b/usr/local/include/boost/process/detail/posix/executor.hpp
|
||||
@@ -328,6 +328,7 @@ public:
|
||||
}
|
||||
void set_error(const std::error_code &ec, const std::string &msg) {set_error(ec, msg.c_str());};
|
||||
|
||||
+ int error_sink() const {return _pipe_sink;}
|
||||
std::vector<int> get_used_handles() const
|
||||
{
|
||||
if (_pipe_sink == -1)
|
||||
@@ -398,6 +399,7 @@ child executor<Sequence>::invoke(boost::mpl::false_, boost::mpl::false_)
|
||||
set_error(err, "fcntl(2) failed");//this might throw, so we need to be sure our pipe is safe.
|
||||
return child();
|
||||
}
|
||||
+ _pipe_sink = p.p[1];
|
||||
_ec.clear();
|
||||
boost::fusion::for_each(seq, call_on_setup(*this));
|
||||
|
||||
@@ -421,7 +423,6 @@ child executor<Sequence>::invoke(boost::mpl::false_, boost::mpl::false_)
|
||||
}
|
||||
else if (pid == 0)
|
||||
{
|
||||
- _pipe_sink = p.p[1];
|
||||
::close(p.p[0]);
|
||||
|
||||
boost::fusion::for_each(seq, call_on_exec_setup(*this));
|
||||
diff --git a/usr/local/include/boost/process/detail/posix/pipe_out.hpp b/usr/local/include/boost/process/detail/posix/pipe_out.hpp
|
||||
index d54cca4e..7a711983 100644
|
||||
--- a/usr/local/include/boost/process/detail/posix/pipe_out.hpp
|
||||
+++ b/usr/local/include/boost/process/detail/posix/pipe_out.hpp
|
||||
@@ -18,7 +18,7 @@
|
||||
namespace boost { namespace process { namespace detail { namespace posix {
|
||||
|
||||
template<int p1, int p2>
|
||||
-struct pipe_out : handler_base_ext
|
||||
+struct pipe_out : handler_base_ext, ::boost::process::detail::uses_handles
|
||||
{
|
||||
int sink;
|
||||
int source; //opposite end
|
||||
@@ -31,6 +31,14 @@ struct pipe_out : handler_base_ext
|
||||
p.assign_sink(-1);
|
||||
}
|
||||
|
||||
+ std::array<int, 4> get_used_handles()
|
||||
+ {
|
||||
+ const auto pp1 = p1 != -1 ? p1 : p2;
|
||||
+ const auto pp2 = p2 != -1 ? p2 : p1;
|
||||
+
|
||||
+ return {sink, source, pp1, pp2};
|
||||
+ }
|
||||
+
|
||||
template<typename Executor>
|
||||
void on_error(Executor &, const std::error_code &) const
|
||||
{
|
||||
@@ -66,7 +74,7 @@ void pipe_out<2,-1>::on_exec_setup(Executor &e) const
|
||||
if (::dup2(sink, STDERR_FILENO) == -1)
|
||||
e.set_error(::boost::process::detail::get_last_error(), "dup2() failed");
|
||||
|
||||
- if (sink != STDOUT_FILENO)
|
||||
+ if (sink != STDERR_FILENO)
|
||||
::close(sink);
|
||||
::close(source);
|
||||
}
|
||||
@@ -81,6 +89,7 @@ void pipe_out<1,2>::on_exec_setup(Executor &e) const
|
||||
e.set_error(::boost::process::detail::get_last_error(), "dup2() failed");
|
||||
if ((sink != STDOUT_FILENO) && (sink != STDERR_FILENO))
|
||||
::close(sink);
|
||||
+ ::close(source);
|
||||
}
|
||||
|
||||
class async_pipe;
|
||||
diff --git a/usr/local/include/boost/process/detail/used_handles.hpp b/usr/local/include/boost/process/detail/used_handles.hpp
|
||||
index 8db226d4..b7dc13d0 100644
|
||||
--- a/usr/local/include/boost/process/detail/used_handles.hpp
|
||||
+++ b/usr/local/include/boost/process/detail/used_handles.hpp
|
||||
@@ -61,6 +61,9 @@ struct foreach_handle_invocator
|
||||
template<typename Executor, typename Function>
|
||||
void foreach_used_handle(Executor &exec, Function &&func)
|
||||
{
|
||||
+#if defined(BOOST_POSIX_API)
|
||||
+ func(exec.error_sink());
|
||||
+#endif
|
||||
boost::fusion::for_each(boost::fusion::filter_if<does_use_handle<boost::mpl::_>>(exec.seq),
|
||||
foreach_handle_invocator<Function>(func));
|
||||
}
|
||||
diff --git a/usr/local/include/boost/process/detail/windows/handles.hpp b/usr/local/include/boost/process/detail/windows/handles.hpp
|
||||
index 901b339a..da78b1ce 100644
|
||||
--- a/usr/local/include/boost/process/detail/windows/handles.hpp
|
||||
+++ b/usr/local/include/boost/process/detail/windows/handles.hpp
|
||||
@@ -141,10 +141,14 @@ struct limit_handles_ : handler_base_ext
|
||||
::boost::winapi::DWORD_ flags = 0u;
|
||||
if (itr != all_handles.end())
|
||||
*itr = ::boost::winapi::INVALID_HANDLE_VALUE_;
|
||||
- else if ((::boost::winapi::GetHandleInformation(*itr, &flags) != 0)
|
||||
- &&((flags & ::boost::winapi::HANDLE_FLAG_INHERIT_) == 0)) //it is NOT inherited anyhow, so ignore too
|
||||
- *itr = ::boost::winapi::INVALID_HANDLE_VALUE_;
|
||||
});
|
||||
+ for (auto& h : all_handles) {
|
||||
+ ::boost::winapi::DWORD_ flags = 0u;
|
||||
+ if ((h != ::boost::winapi::INVALID_HANDLE_VALUE_)
|
||||
+ && (::boost::winapi::GetHandleInformation(h, &flags) != 0)
|
||||
+ && ((flags & ::boost::winapi::HANDLE_FLAG_INHERIT_) == 0)) //it is NOT inherited anyhow, so ignore too
|
||||
+ h = ::boost::winapi::INVALID_HANDLE_VALUE_;
|
||||
+ }
|
||||
|
||||
auto part_itr = std::partition(all_handles.begin(), all_handles.end(),
|
||||
[](::boost::winapi::HANDLE_ handle) {return handle != ::boost::winapi::INVALID_HANDLE_VALUE_;});
|
||||
--
|
||||
2.51.2.windows.1
|
||||
|
||||
175
deps/Boost/Boost.cmake
vendored
@@ -1,160 +1,27 @@
|
||||
include(ExternalProject)
|
||||
|
||||
if (WIN32)
|
||||
set(_bootstrap_cmd bootstrap.bat)
|
||||
set(_build_cmd b2.exe)
|
||||
else()
|
||||
set(_bootstrap_cmd ./bootstrap.sh)
|
||||
set(_build_cmd ./b2)
|
||||
endif()
|
||||
|
||||
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")
|
||||
set(_context_abi_line "")
|
||||
set(_context_arch_line "")
|
||||
if (APPLE AND CMAKE_OSX_ARCHITECTURES)
|
||||
if (CMAKE_OSX_ARCHITECTURES MATCHES "x86")
|
||||
set(_context_abi_line "-DBOOST_CONTEXT_ABI:STRING=sysv")
|
||||
elseif (CMAKE_OSX_ARCHITECTURES MATCHES "arm")
|
||||
set (_context_abi_line "-DBOOST_CONTEXT_ABI:STRING=aapcs")
|
||||
endif ()
|
||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
if (WIN32)
|
||||
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)
|
||||
set(_context_arch_line "-DBOOST_CONTEXT_ARCHITECTURE:STRING=${CMAKE_OSX_ARCHITECTURES}")
|
||||
message(STATUS "BOOST param: ${_context_abi_line} ${_context_arch_line}")
|
||||
endif ()
|
||||
|
||||
include(ProcessorCount)
|
||||
ProcessorCount(NPROC)
|
||||
file(TO_NATIVE_PATH ${DESTDIR}/usr/local/ _prefix)
|
||||
|
||||
set(_boost_flags "")
|
||||
if (UNIX)
|
||||
set(_boost_flags "cflags=-fPIC;cxxflags=-fPIC")
|
||||
endif ()
|
||||
|
||||
if(APPLE)
|
||||
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/qiditech/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}"
|
||||
qidistudio_add_cmake_project(Boost
|
||||
URL "https://github.com/boostorg/boost/releases/download/boost-1.84.0/boost-1.84.0.tar.gz"
|
||||
URL_HASH SHA256=4d27e9efed0f6f152dc28db6430b9d3dfb40c0345da7342eaa5a987dde57bd95
|
||||
LIST_SEPARATOR |
|
||||
#PATCH_COMMAND git apply --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-FIX-OBS-cannot-start-streaming-on-MAC.patch
|
||||
CMAKE_ARGS
|
||||
-DBOOST_EXCLUDE_LIBRARIES:STRING=contract|fiber|numpy|wave|test
|
||||
-DBOOST_LOCALE_ENABLE_ICU:BOOL=OFF # do not link to libicu, breaks compatibility between distros
|
||||
-DBUILD_TESTING:BOOL=OFF
|
||||
"${_context_abi_line}"
|
||||
"${_context_arch_line}"
|
||||
)
|
||||
|
||||
if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
|
||||
# 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 ()
|
||||
set(DEP_Boost_DEPENDS ZLIB)
|
||||
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);
|
||||
8
deps/CGAL/CGAL.cmake
vendored
@@ -1,10 +1,12 @@
|
||||
if (IN_GIT_REPO)
|
||||
set(CGAL_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_CGAL-prefix/src/dep_CGAL)
|
||||
endif ()
|
||||
|
||||
qidistudio_add_cmake_project(
|
||||
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_HASH SHA256=d7605e0a5a5ca17da7547592f6f6e4a59430a0bc861948974254d0de43eab4c0
|
||||
PATCH_COMMAND git apply ${CGAL_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-clang19.patch
|
||||
DEPENDS ${BOOST_PKG} dep_GMP dep_MPFR
|
||||
)
|
||||
|
||||
|
||||
33
deps/CMakeLists.txt
vendored
@@ -27,6 +27,9 @@ include(ExternalProject)
|
||||
include(ProcessorCount)
|
||||
|
||||
ProcessorCount(NPROC)
|
||||
if(DEFINED ENV{CMAKE_BUILD_PARALLEL_LEVEL})
|
||||
set(NPROC $ENV{CMAKE_BUILD_PARALLEL_LEVEL})
|
||||
endif()
|
||||
if (NPROC EQUAL 0)
|
||||
set(NPROC 1)
|
||||
endif ()
|
||||
@@ -50,6 +53,24 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
option(DEP_WX_GTK3 "Build wxWidgets against GTK3" OFF)
|
||||
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.
|
||||
# FIXME:
|
||||
# Enabling this option is not safe. IGL will compile itself with its own version of Eigen while
|
||||
@@ -72,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.")
|
||||
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)
|
||||
cmake_parse_arguments(P_ARGS "" "INSTALL_DIR;BUILD_COMMAND;INSTALL_COMMAND" "CMAKE_ARGS" ${ARGN})
|
||||
|
||||
@@ -102,6 +134,7 @@ function(qidistudio_add_cmake_project projectname)
|
||||
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}
|
||||
-DBUILD_SHARED_LIBS:BOOL=OFF
|
||||
${_cmake_osx_arch}
|
||||
"${_configs_line}"
|
||||
${DEP_CMAKE_OPTS}
|
||||
${P_ARGS_CMAKE_ARGS}
|
||||
|
||||
66
deps/FFMPEG/FFMPEG.cmake
vendored
@@ -4,7 +4,7 @@ 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/qiditech/ffmpeg_prebuilts/releases/download/7.0.2/7.0.2_msvc.zip
|
||||
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 ""
|
||||
@@ -28,32 +28,58 @@ else ()
|
||||
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}
|
||||
"--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"
|
||||
${_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 -j
|
||||
BUILD_COMMAND make ${_build_j}
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
||||
|
||||
9
deps/GLEW/glew/CMakeLists.txt
vendored
@@ -3,9 +3,12 @@ project(GLEW)
|
||||
|
||||
find_package(OpenGL REQUIRED)
|
||||
|
||||
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")
|
||||
# we do not support wayland for now
|
||||
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
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()
|
||||
|
||||
add_library(GLEW src/glew.c)
|
||||
|
||||
22
deps/GMP/GMP.cmake
vendored
@@ -22,10 +22,24 @@ else ()
|
||||
|
||||
if (APPLE)
|
||||
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()
|
||||
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")
|
||||
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
|
||||
set(_gmp_ccflags "${_gmp_ccflags} -march=armv7-a") # Works on RPi-4
|
||||
@@ -43,7 +57,7 @@ else ()
|
||||
endif ()
|
||||
|
||||
ExternalProject_Add(dep_GMP
|
||||
URL https://github.com/qiditech/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
|
||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/GMP
|
||||
BUILD_IN_SOURCE ON
|
||||
|
||||
4
deps/JPEG/JPEG.cmake
vendored
@@ -12,8 +12,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
endif()
|
||||
|
||||
qidistudio_add_cmake_project(JPEG
|
||||
URL https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/2.0.6.zip
|
||||
URL_HASH SHA256=017bdc33ff3a72e11301c0feb4657cb27719d7f97fa67a78ed506c594218bbf1
|
||||
URL https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/3.0.1.zip
|
||||
URL_HASH SHA256=d6d99e693366bc03897677650e8b2dfa76b5d6c54e2c9e70c03f0af821b0a52f
|
||||
DEPENDS ${ZLIB_PKG}
|
||||
CMAKE_ARGS
|
||||
-DENABLE_SHARED=OFF
|
||||
|
||||
24
deps/OCCT/0001-OCCT-fix.patch
vendored
@@ -195,3 +195,27 @@ index 5ae9899f..0a17372b 100644
|
||||
|
||||
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")
|
||||
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
|
||||
URL https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_0.zip
|
||||
URL_HASH SHA256=28334f0e98f1b1629799783e9b4d21e05349d89e695809d7e6dfa45ea43e1dbc
|
||||
#PATCH_COMMAND ${PATCH_CMD} ${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
|
||||
PATCH_COMMAND git apply ${OCCT_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch
|
||||
#DEPENDS dep_Boost
|
||||
#DEPENDS dep_FREETYPE
|
||||
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
|
||||
7
deps/OpenCV/OpenCV.cmake
vendored
@@ -4,10 +4,14 @@ else ()
|
||||
set(_use_IPP "-DWITH_IPP=OFF")
|
||||
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
|
||||
URL https://github.com/opencv/opencv/archive/refs/tags/4.6.0.tar.gz
|
||||
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
|
||||
-DBUILD_SHARED_LIBS=0
|
||||
-DBUILD_PERE_TESTS=OFF
|
||||
@@ -49,6 +53,7 @@ qidistudio_add_cmake_project(OpenCV
|
||||
-DWITH_OPENJPEG=OFF
|
||||
-DWITH_QUIRC=OFF
|
||||
-DWITH_VTK=OFF
|
||||
-DWITH_JPEG=OFF
|
||||
-DWITH_WEBP=OFF
|
||||
-DENABLE_PRECOMPILED_HEADERS=OFF
|
||||
-DINSTALL_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")
|
||||
set(_patch_cmd ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OpenEXR-GCC13.patch)
|
||||
else()
|
||||
@@ -18,7 +47,7 @@ qidistudio_add_cmake_project(OpenEXR
|
||||
-DOPENEXR_VIEWERS_ENABLE:BOOL=OFF
|
||||
-DOPENEXR_BUILD_UTILS:BOOL=OFF
|
||||
)
|
||||
|
||||
endif()
|
||||
if (MSVC)
|
||||
add_debug_dep(dep_OpenEXR)
|
||||
endif ()
|
||||
|
||||
3
deps/OpenSSL/OpenSSL.cmake
vendored
@@ -19,7 +19,7 @@ if(WIN32)
|
||||
set(_install_cmd nmake install_sw )
|
||||
else()
|
||||
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()
|
||||
set(_conf_cmd "./config")
|
||||
endif()
|
||||
@@ -58,6 +58,7 @@ ExternalProject_Add(dep_OpenSSL
|
||||
${_cross_comp_prefix_line}
|
||||
no-shared
|
||||
no-asm
|
||||
no-tests
|
||||
no-ssl3-method
|
||||
no-dynamic-engine
|
||||
BUILD_IN_SOURCE ON
|
||||
|
||||
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)
|
||||
endif()
|
||||
|
||||
if (BINARY_DIR_REL)
|
||||
set(OPENVDB_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_OpenVDB-prefix/src/dep_OpenVDB)
|
||||
endif ()
|
||||
|
||||
set (_openvdb_vdbprint ON)
|
||||
#if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
|
||||
# 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
|
||||
URL https://github.com/tamasmeszaros/openvdb/archive/a68fd58d0e2b85f01adeb8b13d7555183ab10aa5.zip # 8.2 patched
|
||||
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_HASH SHA256=48C2CFA9853B58FA86282DF1F83F0E99D07858CC03EB2BA8227DC447A830100A
|
||||
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 "")
|
||||
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 "")
|
||||
if (APPLE)
|
||||
set(_patch_step PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/PNG.patch)
|
||||
endif ()
|
||||
|
||||
qidistudio_add_cmake_project(PNG
|
||||
# GIT_REPOSITORY https://github.com/glennrp/libpng.git
|
||||
# GIT_TAG v1.6.35
|
||||
URL https://github.com/glennrp/libpng/archive/refs/tags/v1.6.35.zip
|
||||
URL_HASH SHA256=3d22d46c566b1761a0e15ea397589b3a5f36ac09b7c785382e6470156c04247f
|
||||
DEPENDS ${ZLIB_PKG}
|
||||
"${_patch_step}"
|
||||
CMAKE_ARGS
|
||||
-DPNG_SHARED=OFF
|
||||
-DPNG_STATIC=ON
|
||||
-DPNG_PREFIX=prusaslicer_
|
||||
-DPNG_TESTS=OFF
|
||||
-DDISABLE_DEPENDENCY_TRACKING=OFF
|
||||
${_disable_neon_extension}
|
||||
if (APPLE)
|
||||
set(_patch_step PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/PNG.patch ${CMAKE_CURRENT_LIST_DIR}/0002-clang19-macos.patch)
|
||||
endif ()
|
||||
qidistudio_add_cmake_project(PNG
|
||||
# GIT_REPOSITORY https://github.com/glennrp/libpng.git
|
||||
# GIT_TAG v1.6.35
|
||||
URL https://github.com/glennrp/libpng/archive/refs/tags/v1.6.35.zip
|
||||
URL_HASH SHA256=3d22d46c566b1761a0e15ea397589b3a5f36ac09b7c785382e6470156c04247f
|
||||
DEPENDS ${ZLIB_PKG}
|
||||
"${_patch_step}"
|
||||
CMAKE_ARGS
|
||||
-DPNG_SHARED=OFF
|
||||
-DPNG_STATIC=ON
|
||||
-DPNG_PREFIX=prusaslicer_
|
||||
-DPNG_TESTS=OFF
|
||||
-DDISABLE_DEPENDENCY_TRACKING=OFF
|
||||
${_disable_neon_extension}
|
||||
)
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
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)
|
||||
|
||||
qidistudio_add_cmake_project(TIFF
|
||||
URL https://gitlab.com/libtiff/libtiff/-/archive/v4.1.0/libtiff-v4.1.0.zip
|
||||
URL_HASH SHA256=c56edfacef0a60c0de3e6489194fcb2f24c03dbb550a8a7de5938642d045bd32
|
||||
URL https://download.osgeo.org/libtiff/tiff-4.1.0.zip
|
||||
URL_HASH SHA256=6F3DBED9D2ECFED33C7192B5C01884078970657FA21B4AD28E3CDF3438EB2419
|
||||
DEPENDS ${ZLIB_PKG} ${PNG_PKG} ${JPEG_PKG}
|
||||
CMAKE_ARGS
|
||||
-Dlzma:BOOL=OFF
|
||||
|
||||
6
deps/wxWidgets/wxWidgets.cmake
vendored
@@ -6,8 +6,9 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
endif ()
|
||||
set(_wx_toolkit "-DwxBUILD_TOOLKIT=gtk${_gtk_ver}")
|
||||
set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=1")
|
||||
set(_wx_egl "-DwxUSE_GLCANVAS_EGL=OFF")
|
||||
else ()
|
||||
set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=0")
|
||||
set(_wx_egl "")
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
@@ -23,7 +24,7 @@ endif ()
|
||||
# endif ()
|
||||
|
||||
qidistudio_add_cmake_project(wxWidgets
|
||||
GIT_REPOSITORY "https://github.com/qiditech/wxWidgets"
|
||||
GIT_REPOSITORY "https://github.com/bambulab/wxWidgets"
|
||||
GIT_TAG master
|
||||
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${TIFF_PKG} ${JPEG_PKG}
|
||||
CMAKE_ARGS
|
||||
@@ -52,6 +53,7 @@ qidistudio_add_cmake_project(wxWidgets
|
||||
-DwxUSE_LIBJPEG=sys
|
||||
-DwxUSE_LIBTIFF=sys
|
||||
-DwxUSE_EXPAT=sys
|
||||
${_wx_egl}
|
||||
)
|
||||
|
||||
if (MSVC)
|
||||
|
||||
19
docker/BuildAppimageDockerfile
Normal file
@@ -0,0 +1,19 @@
|
||||
ARG VERSION="studio_dep_22"
|
||||
FROM ${VERSION}:1.0 AS builder
|
||||
|
||||
COPY ./ /QIDIStudio
|
||||
|
||||
WORKDIR /QIDIStudio
|
||||
|
||||
RUN mkdir -p /QIDIStudio/deps/build
|
||||
|
||||
RUN mv /destdir /QIDIStudio/deps/build/
|
||||
|
||||
RUN ./BuildLinux.sh -s
|
||||
|
||||
ENV container=podman
|
||||
RUN ./BuildLinux.sh -i
|
||||
|
||||
FROM scratch AS export-stage
|
||||
|
||||
COPY --from=builder /QIDIStudio/build/QIDIStudio_ubu64.AppImage /
|
||||
39
docker/BuildDepsDockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
FROM docker.io/ubuntu:22.04
|
||||
|
||||
# Disable interactive package configuration
|
||||
RUN apt-get update && \
|
||||
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
autoconf \
|
||||
build-essential \
|
||||
cmake \
|
||||
curl \
|
||||
xvfb \
|
||||
extra-cmake-modules \
|
||||
file \
|
||||
git \
|
||||
locales \
|
||||
locales-all \
|
||||
m4 \
|
||||
pkgconf \
|
||||
sudo \
|
||||
wayland-protocols \
|
||||
libwebkit2gtk-4.0-dev \
|
||||
wget
|
||||
|
||||
COPY ./ /QIDIStudio
|
||||
|
||||
WORKDIR /QIDIStudio
|
||||
|
||||
# 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
|
||||
|
||||
RUN ./BuildLinux.sh -u
|
||||
|
||||
RUN ./BuildLinux.sh -dfr
|
||||
|
||||
RUN cp -r deps/build/destdir /
|
||||
|
||||
RUN rm -rf /QIDIStudio
|
||||
39
docker/BuildDepsDockerfile24
Normal file
@@ -0,0 +1,39 @@
|
||||
FROM docker.io/ubuntu:24.04
|
||||
|
||||
# Disable interactive package configuration
|
||||
RUN apt-get update && \
|
||||
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
autoconf \
|
||||
build-essential \
|
||||
cmake \
|
||||
curl \
|
||||
xvfb \
|
||||
extra-cmake-modules \
|
||||
file \
|
||||
git \
|
||||
locales \
|
||||
locales-all \
|
||||
m4 \
|
||||
pkgconf \
|
||||
sudo \
|
||||
wayland-protocols \
|
||||
libwebkit2gtk-4.1-dev \
|
||||
wget
|
||||
|
||||
COPY ./ /QIDIStudio
|
||||
|
||||
WORKDIR /QIDIStudio
|
||||
|
||||
# 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
|
||||
|
||||
RUN ./BuildLinux.sh -u
|
||||
|
||||
RUN ./BuildLinux.sh -dfr
|
||||
|
||||
RUN cp -r deps/build/destdir /
|
||||
|
||||
RUN rm -rf /QIDIStudio
|
||||
@@ -30,6 +30,7 @@ REQUIRED_DEV_PACKAGES=(
|
||||
nasm
|
||||
yasm
|
||||
libx264-dev
|
||||
libbz2-dev
|
||||
)
|
||||
|
||||
if [[ -n "$UPDATE_LIB" ]]
|
||||
|
||||
@@ -38,6 +38,7 @@ REQUIRED_DEV_PACKAGES=(
|
||||
nasm
|
||||
yasm
|
||||
x264-devel
|
||||
bzip2-devel
|
||||
)
|
||||
|
||||
if [[ -n "$UPDATE_LIB" ]]
|
||||
|
||||
@@ -7,8 +7,9 @@ namespace QIDIStudio {
|
||||
|
||||
//QDS: only check wodth when dE is longer than this value
|
||||
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 MULTI_NOZZLE_TEMP_THRESHOLD = 100;
|
||||
|
||||
const double filament_diameter = 1.75;
|
||||
const double Pi = 3.14159265358979323846;
|
||||
@@ -28,6 +29,8 @@ const std::string nozzle_temperature_initial_layer_Tag = " nozzle_temperature_i
|
||||
const std::string Z_HEIGHT_TAG = " Z_HEIGHT: ";
|
||||
const std::string Initial_Layer_Ptint_Height_Tag = " initial_layer_print_height =";
|
||||
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)
|
||||
{
|
||||
@@ -38,7 +41,11 @@ GCodeCheckResult GCodeChecker::parse_file(const std::string& path)
|
||||
}
|
||||
std::string line_raw;
|
||||
std::string line;
|
||||
int line_number = 0;
|
||||
|
||||
|
||||
while (std::getline(file, line_raw)) {
|
||||
line_number++;
|
||||
const char *c = line_raw.c_str();
|
||||
c = skip_whitespaces(c);
|
||||
if (std::toupper(*c) == 'N')
|
||||
@@ -46,7 +53,8 @@ GCodeCheckResult GCodeChecker::parse_file(const std::string& path)
|
||||
c = skip_whitespaces(c);
|
||||
line = c;
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -115,17 +123,40 @@ GCodeCheckResult GCodeChecker::parse_comment(GCodeLine& line)
|
||||
if (starts_with(comment, Extrusion_Role_Tag)) {
|
||||
m_role = string_to_role(comment.substr(Extrusion_Role_Tag.length()));
|
||||
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]) {
|
||||
std::cout << "invalid filament nozzle temperature comment with invalid value!" << std::endl;
|
||||
return GCodeCheckResult::ParseFailed;
|
||||
double check_nozzle_temp = 0.0f;
|
||||
if (is_multi_nozzle == true) {
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -189,7 +220,36 @@ GCodeCheckResult GCodeChecker::parse_comment(GCodeLine& line)
|
||||
std::cout << "invalid nozzle temperature initial layer comment with invalid value!" << std::endl;
|
||||
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());
|
||||
if (!parse_double_from_str(str, z_height)) {
|
||||
std::cout << "invalid z height comment with invalid value!" << std::endl;
|
||||
@@ -257,7 +317,7 @@ GCodeCheckResult GCodeChecker::parse_command(GCodeLine& gcode_line)
|
||||
case 'T':{
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -267,9 +327,24 @@ GCodeCheckResult GCodeChecker::parse_command(GCodeLine& gcode_line)
|
||||
break;
|
||||
}
|
||||
filament_id = pt;
|
||||
|
||||
if (is_multi_nozzle == true) {
|
||||
set_current_nozzle(pt);
|
||||
}
|
||||
|
||||
flow_ratio = filament_flow_ratio[pt];
|
||||
break;
|
||||
}
|
||||
case 'S': {
|
||||
if (cmd.compare(0, 4, "SYNC") == 0) {
|
||||
// Valid SYNC command
|
||||
}
|
||||
else {
|
||||
// Invalid SYNC command
|
||||
ret = GCodeCheckResult::ParseFailed;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
//QDS: other g command? impossible! must be invalid
|
||||
ret = GCodeCheckResult::ParseFailed;
|
||||
@@ -479,21 +554,42 @@ GCodeCheckResult GCodeChecker::parse_M83(const GCodeLine& gcode_line)
|
||||
return GCodeCheckResult::Success;
|
||||
}
|
||||
|
||||
GCodeCheckResult GCodeChecker::parse_M104_M109(const GCodeLine &gcode_line)
|
||||
GCodeCheckResult GCodeChecker::parse_M104_M109(const GCodeLine& gcode_line)
|
||||
{
|
||||
const char *c = gcode_line.m_raw.c_str();
|
||||
const char *rs = strchr(c,'S');
|
||||
|
||||
std::string str=rs;
|
||||
str = str.substr(1);
|
||||
for (int i = 0; i < str.size(); i++) {
|
||||
if (str[i] == ' ')
|
||||
str=str.substr(0,i);
|
||||
const char* c = gcode_line.m_raw.c_str();
|
||||
const char* rs = strchr(c, 'S');
|
||||
if (!rs) {
|
||||
std::cout << "No S parameter found in M104/M109 command!" << std::endl;
|
||||
return GCodeCheckResult::Success;
|
||||
}
|
||||
if (!parse_double_from_str(str, nozzle_temp)) {
|
||||
std::cout << "invalid nozzle temperature comment with invalid value!" << std::endl;
|
||||
|
||||
std::string strS = rs + 1;
|
||||
size_t pos = strS.find_first_of(" ;");
|
||||
if (pos != std::string::npos)
|
||||
strS = strS.substr(0, pos);
|
||||
|
||||
double temp_nozzle_temp;
|
||||
if (!parse_double_from_str(strS, temp_nozzle_temp)) {
|
||||
std::cout << "Invalid nozzle temperature: " << strS << std::endl;
|
||||
return GCodeCheckResult::ParseFailed;
|
||||
}
|
||||
if (is_multi_nozzle == true) {
|
||||
const char* rt = strchr(c, 'T');
|
||||
if (rt) {
|
||||
std::string strT = rt + 1;
|
||||
size_t posT = strT.find_first_of(" ;");
|
||||
if (posT != std::string::npos)
|
||||
strT = strT.substr(0, posT);
|
||||
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;
|
||||
}
|
||||
@@ -689,6 +785,16 @@ GCodeCheckResult GCodeChecker::check_G0_G1_width(const GCodeLine& line)
|
||||
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)
|
||||
{
|
||||
auto absolute_position = [this](Axis axis, const GCodeLine& lineG2_3) {
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <array>
|
||||
#include <map>
|
||||
|
||||
namespace QIDIStudio {
|
||||
|
||||
@@ -116,6 +117,7 @@ private:
|
||||
GCodeCheckResult check_line_width(const GCodeLine& gcode_line);
|
||||
GCodeCheckResult check_G0_G1_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,
|
||||
const std::array<double, 3>& target,
|
||||
@@ -214,12 +216,22 @@ private:
|
||||
bool check_gap_infill_width = false;
|
||||
int filament_id;
|
||||
double flow_ratio = 0;
|
||||
|
||||
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> nozzle_temperature;
|
||||
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,69 @@
|
||||
src/libslic3r/PresetBundle.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevAxis.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevBed.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevBed.h
|
||||
src/slic3r/GUI/DeviceCore/DevConfig.h
|
||||
src/slic3r/GUI/DeviceCore/DevConfig.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevConfigUtil.h
|
||||
src/slic3r/GUI/DeviceCore/DevConfigUtil.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevCtrl.h
|
||||
src/slic3r/GUI/DeviceCore/DevCtrl.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevDefs.h
|
||||
src/slic3r/GUI/DeviceCore/DevExtensionTool.h
|
||||
src/slic3r/GUI/DeviceCore/DevExtensionTool.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevExtruderSystem.h
|
||||
src/slic3r/GUI/DeviceCore/DevExtruderSystem.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevExtruderSystemCtrl.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevFan.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevFan.h
|
||||
src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h
|
||||
src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevFilaBlackList.h
|
||||
src/slic3r/GUI/DeviceCore/DevFilaBlackList.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevFilaSystem.h
|
||||
src/slic3r/GUI/DeviceCore/DevFilaSystem.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevFirmware.h
|
||||
src/slic3r/GUI/DeviceCore/DevFirmware.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevPrintOptions.h
|
||||
src/slic3r/GUI/DeviceCore/DevPrintOptions.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevPrintTaskInfo.h
|
||||
src/slic3r/GUI/DeviceCore/DevPrintTaskInfo.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevHMS.h
|
||||
src/slic3r/GUI/DeviceCore/DevHMS.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevStorage.h
|
||||
src/slic3r/GUI/DeviceCore/DevStorage.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevInfo.h
|
||||
src/slic3r/GUI/DeviceCore/DevInfo.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevLamp.h
|
||||
src/slic3r/GUI/DeviceCore/DevLamp.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevLampCtrl.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevManager.h
|
||||
src/slic3r/GUI/DeviceCore/DevManager.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevMapping.h
|
||||
src/slic3r/GUI/DeviceCore/DevMapping.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevNozzleRack.h
|
||||
src/slic3r/GUI/DeviceCore/DevNozzleRack.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevNozzleRackCtrl.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevNozzleSystem.h
|
||||
src/slic3r/GUI/DeviceCore/DevNozzleSystem.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevUpgrade.h
|
||||
src/slic3r/GUI/DeviceCore/DevUpgrade.cpp
|
||||
src/slic3r/GUI/DeviceCore/DevUtil.h
|
||||
src/slic3r/GUI/DeviceCore/DevUtil.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/DeviceTab/wgtDeviceNozzleRack.h
|
||||
src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRack.cpp
|
||||
src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRackUpdate.h
|
||||
src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRackUpdate.cpp
|
||||
src/slic3r/GUI/DeviceTab/wgtDeviceNozzleSelect.h
|
||||
src/slic3r/GUI/DeviceTab/wgtDeviceNozzleSelect.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoMove.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoScale.cpp
|
||||
@@ -16,6 +79,10 @@ src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoSeam.hpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoText.cpp
|
||||
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_App.cpp
|
||||
src/slic3r/GUI/GUI_AuxiliaryList.cpp
|
||||
@@ -33,16 +100,22 @@ src/slic3r/GUI/HintNotification.cpp
|
||||
src/slic3r/GUI/IMSlider.cpp
|
||||
src/slic3r/GUI/Widgets/SideTools.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/Jobs/ArrangeJob.cpp
|
||||
src/slic3r/GUI/Jobs/OrientJob.cpp
|
||||
src/slic3r/GUI/Jobs/FillBedJob.cpp
|
||||
src/slic3r/GUI/Jobs/EmbossJob.cpp
|
||||
src/slic3r/GUI/Jobs/Job.cpp
|
||||
src/slic3r/GUI/Jobs/PlaterJob.cpp
|
||||
src/slic3r/GUI/Jobs/RotoptimizeJob.cpp
|
||||
src/slic3r/GUI/Jobs/BindJob.cpp
|
||||
src/slic3r/GUI/Jobs/PrintJob.cpp
|
||||
src/slic3r/GUI/Jobs/SendJob.cpp
|
||||
src/slic3r/GUI/ThermalPreconditioningDialog.cpp
|
||||
src/slic3r/GUI/ThermalPreconditioningDialog.hpp
|
||||
src/slic3r/GUI/Jobs/SLAImportJob.cpp
|
||||
src/slic3r/GUI/Jobs/UpgradeNetworkJob.cpp
|
||||
src/slic3r/GUI/AboutDialog.cpp
|
||||
@@ -58,8 +131,12 @@ src/slic3r/GUI/BedShapeDialog.cpp
|
||||
src/slic3r/GUI/BedShapeDialog.hpp
|
||||
src/slic3r/GUI/ConfigManipulation.cpp
|
||||
src/slic3r/GUI/DeviceManager.cpp
|
||||
src/slic3r/GUI/DeviceErrorDialog.cpp
|
||||
src/slic3r/GUI/ExtraRenderers.cpp
|
||||
src/slic3r/GUI/Field.cpp
|
||||
src/slic3r/GUI/GCodeRenderer/AdvancedRenderer.cpp
|
||||
src/slic3r/GUI/GCodeRenderer/BaseRenderer.cpp
|
||||
src/slic3r/GUI/GCodeRenderer/LegacyRenderer.cpp
|
||||
src/slic3r/GUI/GCodeViewer.cpp
|
||||
src/slic3r/GUI/GLCanvas3D.cpp
|
||||
src/slic3r/GUI/Calibration.cpp
|
||||
@@ -70,9 +147,13 @@ src/slic3r/GUI/MainFrame.cpp
|
||||
src/slic3r/GUI/MediaPlayCtrl.cpp
|
||||
src/slic3r/GUI/MediaFilePanel.cpp
|
||||
src/slic3r/GUI/ImageGrid.cpp
|
||||
src/slic3r/GUI/Widgets/ImageSwitchButton.cpp
|
||||
src/slic3r/GUI/Printer/PrinterFileSystem.cpp
|
||||
src/slic3r/GUI/Mouse3DController.cpp
|
||||
src/slic3r/GUI/SelectMachinePop.cpp
|
||||
src/slic3r/GUI/StatusPanel.cpp
|
||||
src/slic3r/GUI/StepMeshDialog.cpp
|
||||
src/slic3r/GUI/StepMeshDialog.hpp
|
||||
src/slic3r/GUI/Monitor.cpp
|
||||
src/slic3r/GUI/MsgDialog.cpp
|
||||
src/slic3r/GUI/NotificationManager.hpp
|
||||
@@ -81,6 +162,7 @@ src/slic3r/GUI/ObjectDataViewModel.cpp
|
||||
src/slic3r/GUI/OpenGLManager.cpp
|
||||
src/slic3r/GUI/OptionsGroup.cpp
|
||||
src/slic3r/GUI/PrintOptionsDialog.cpp
|
||||
src/slic3r/GUI/SafetyOptionsDialog.cpp
|
||||
src/slic3r/GUI/ParamsPanel.cpp
|
||||
src/slic3r/GUI/PartPlate.cpp
|
||||
src/slic3r/GUI/Plater.cpp
|
||||
@@ -89,12 +171,14 @@ src/slic3r/GUI/PresetComboBoxes.cpp
|
||||
src/slic3r/GUI/PresetHints.cpp
|
||||
src/slic3r/GUI/ProgressStatusBar.cpp
|
||||
src/slic3r/GUI/PlateSettingsDialog.cpp
|
||||
src/slic3r/GUI/PlateMoveDialog.cpp
|
||||
src/slic3r/GUI/PrivacyUpdateDialog.cpp
|
||||
src/slic3r/GUI/PublishDialog.cpp
|
||||
src/slic3r/GUI/SavePresetDialog.cpp
|
||||
src/slic3r/GUI/Search.cpp
|
||||
src/slic3r/GUI/Selection.cpp
|
||||
src/slic3r/GUI/SelectMachine.cpp
|
||||
src/slic3r/GUI/PrePrintChecker.cpp
|
||||
src/slic3r/GUI/SendSystemInfoDialog.cpp
|
||||
src/slic3r/GUI/SendToPrinter.cpp
|
||||
src/slic3r/GUI/SlicingProgressNotification.cpp
|
||||
@@ -106,6 +190,7 @@ src/slic3r/GUI/Auxiliary.cpp
|
||||
src/slic3r/GUI/UpdateDialogs.cpp
|
||||
src/slic3r/GUI/UnsavedChangesDialog.cpp
|
||||
src/slic3r/GUI/ObjColorDialog.cpp
|
||||
src/slic3r/GUI/SyncAmsInfoDialog.cpp
|
||||
src/slic3r/GUI/WipeTowerDialog.cpp
|
||||
src/slic3r/GUI/wxExtensions.cpp
|
||||
src/slic3r/GUI/WebUserLoginDialog.cpp
|
||||
@@ -114,13 +199,17 @@ src/slic3r/GUI/KBShortcutsDialog.hpp
|
||||
src/slic3r/GUI/KBShortcutsDialog.cpp
|
||||
src/slic3r/GUI/ReleaseNote.cpp
|
||||
src/slic3r/GUI/ReleaseNote.hpp
|
||||
src/slic3r/GUI/HelioReleaseNote.cpp
|
||||
src/slic3r/GUI/HelioReleaseNote.hpp
|
||||
src/slic3r/GUI/UpgradePanel.cpp
|
||||
src/slic3r/GUI/Project.cpp
|
||||
src/slic3r/Utils/FixModelByWin10.cpp
|
||||
src/slic3r/Utils/PresetUpdater.cpp
|
||||
src/slic3r/Utils/Http.cpp
|
||||
src/slic3r/Utils/Process.cpp
|
||||
src/slic3r/GUI/Jobs/PrintJob.cpp
|
||||
src/libslic3r/GCode.cpp
|
||||
src/libslic3r/GCode/ToolOrdering.cpp
|
||||
src/libslic3r/ExtrusionEntity.cpp
|
||||
src/libslic3r/Flow.cpp
|
||||
src/libslic3r/Format/AMF.cpp
|
||||
@@ -140,13 +229,16 @@ src/slic3r/GUI/CalibrationWizardPage.cpp
|
||||
src/slic3r/GUI/CalibrationPanel.cpp
|
||||
src/slic3r/GUI/CalibrationWizard.cpp
|
||||
src/slic3r/GUI/CalibrationWizardStartPage.cpp
|
||||
src/slic3r/GUI/CalibrationWizardSavePage.cpp
|
||||
src/slic3r/GUI/CalibrationWizardPresetPage.cpp
|
||||
src/slic3r/GUI/CalibrationWizardCaliPage.cpp
|
||||
src/slic3r/GUI/CaliHistoryDialog.cpp
|
||||
src/slic3r/GUI/calib_dlg.cpp
|
||||
src/slic3r/GUI/BonjourDialog.cpp
|
||||
src/slic3r/GUI/calib_dlg.cpp
|
||||
src/slic3r/GUI/PrintHostDialogs.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp
|
||||
src/slic3r/GUI/UIHelpers/MeshBooleanUI.cpp
|
||||
src/slic3r/GUI/NetworkTestDialog.cpp
|
||||
src/slic3r/GUI/CreatePresetsDialog.cpp
|
||||
src/slic3r/GUI/DailyTips.cpp
|
||||
@@ -159,8 +251,25 @@ src/slic3r/Utils/MKS.cpp
|
||||
src/slic3r/Utils/OctoPrint.cpp
|
||||
src/slic3r/Utils/Repetier.cpp
|
||||
src/slic3r/Utils/ProfileDescription.hpp
|
||||
src/slic3r/Utils/HelioDragon.cpp
|
||||
src/slic3r/GUI/SendMultiMachinePage.cpp
|
||||
src/slic3r/GUI/MultiMachinePage.cpp
|
||||
src/slic3r/GUI/MultiMachineManagerPage.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
|
||||
src/slic3r/GUI/Widgets/MultiNozzleSync.cpp
|
||||
src/slic3r/GUI/Widgets/MultiNozzleSync.hpp
|
||||
src/slic3r/GUI/PurgeModeDialog.cpp
|
||||
src/slic3r/GUI/PurgeModeDialog.hpp
|
||||
|
Before Width: | Height: | Size: 560 KiB After Width: | Height: | Size: 502 KiB |
BIN
resources/calib/pressure_advance/auto_pa_line_dual.3mf
Normal file
BIN
resources/calib/pressure_advance/auto_pa_line_single.3mf
Normal file
@@ -1,4 +1,92 @@
|
||||
-----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
|
||||
BQAwQjELMAkGA1UEBhMCQ04xIjAgBgNVBAoMGUJCTCBUZWNobm9sb2dpZXMgQ28u
|
||||
LCBMdGQxDzANBgNVBAMMBkJCTCBDQTAeFw0yMjA0MDQwMzQyMTFaFw0zMjA0MDEw
|
||||
@@ -18,4 +106,4 @@ BdOoo96iX89rRPoxeed1cpq5hZwbeka3+CJGV76itWp35Up5rmmUqrlyQOr/Wax6
|
||||
itosIzG0MfhgUzU51A2P/hSnD3NDMXv+wUY/AvqgIL7u7fbDKnku1GzEKIkfH8hm
|
||||
Rs6d8SCU89xyrwzQ0PR853irHas3WrHVqab3P+qNwR0YirL0Qk7Xt/q3O1griNg2
|
||||
Blbjg3obpHo9
|
||||
-----END CERTIFICATE-----
|
||||
-----END CERTIFICATE-----
|
||||
79
resources/data/helio_hints.ini
Normal file
@@ -0,0 +1,79 @@
|
||||
[hint: Single-Material Only]
|
||||
text = Single-Material Only\nHelio currently simulates one material and one nozzle per job. Multi-material or multi-extruder G-code adds long pauses that break thermal continuity, so results wouldn’t be meaningful.
|
||||
documentation_link = https://wiki.helioadditive.com/en/FAQ
|
||||
image = images/dailytips_helio0.png
|
||||
|
||||
[hint: One Plate per Job]
|
||||
text = One Plate per Job\nUpload G-code with a single build plate—multi-plate projects aren’t yet supported, so only the first plate would run.
|
||||
documentation_link = https://wiki.helioadditive.com/en/FAQ
|
||||
image = images/dailytips_helio1.png
|
||||
|
||||
[hint: What is the Thermal Quality Index?]
|
||||
text = What is the Thermal Quality Index?\nThe Thermal Quality Index (scale –100 to +100) shows how hot or cold each region prints—green (≈ 0) is the “just right” zone for strong, warp-free parts. Keep most of the part green for best results.
|
||||
documentation_link = https://wiki.helioadditive.com/en/FAQ
|
||||
image = images/dailytips_helio2.png
|
||||
|
||||
[hint: Voxel-Level Accuracy]
|
||||
text = Voxel-Level Accuracy\nWe predict temperature in every voxel at every time-step, and for standard jobs the forecast is typically within ±5–10 °C. Pauses, custom firmware or odd cooling can widen that margin.
|
||||
documentation_link = https://wiki.helioadditive.com/en/FAQ
|
||||
image = images/dailytips_helio3.png
|
||||
|
||||
[hint: Fan & Airflow Model]
|
||||
text = Fan & Airflow Model\nA simplified fan-and-room model shows how cooling settings change part temps without slow CFD maths—great for day-to-day tuning. Chamber vortices aren’t yet simulated so runs stay fast.
|
||||
documentation_link = https://wiki.helioadditive.com/en/FAQ
|
||||
image = images/dailytips_helio0.png
|
||||
|
||||
[hint: TQI Limits Explained]
|
||||
text = TQI Limits Explained\n-100 → too cold: tensile strength is ~50 % lower than parts printed at the ideal 0 (ASTM D638 dog-bone tests). +100 → too hot: layers stay molten and may sag or collapse. Keep regions near 0 for peak strength and accuracy.
|
||||
documentation_link = https://wiki.helioadditive.com/en/FAQ
|
||||
image = images/dailytips_helio1.png
|
||||
|
||||
[hint: What Drives Runtime?]
|
||||
text = What Drives Runtime?\nExtra layers, dense infill, lots of tiny arcs (small mesh elements) or very slow printing speeds all extend simulation time because the solver must step through more seconds. Multi-core CPUs or CUDA GPUs speed things up.
|
||||
documentation_link = https://wiki.helioadditive.com/en/FAQ
|
||||
image = images/dailytips_helio2.png
|
||||
|
||||
[hint: Nozzle Temp Range]
|
||||
text = Nozzle Temp Range\nSupported set-points are 190 – 320 °C; anything outside is clamped to keep physics realistic.
|
||||
documentation_link = https://wiki.helioadditive.com/en/FAQ
|
||||
image = images/dailytips_helio3.png
|
||||
|
||||
[hint: Debugging Flowchart]
|
||||
text = Debugging Flowchart\nNot sure why a result looks off? Follow our step-by-step debugging flowchart to trace settings, G-code and material issues in minutes.
|
||||
documentation_link = https://wiki.helioadditive.com/en/flowchart
|
||||
image = images/dailytips_helio0.png
|
||||
|
||||
[hint: Why Cooling Varies]
|
||||
text = Why Cooling Varies\nOuter walls and bridges cool fastest while thick interiors stay warmer—geometry, airflow and tool-path all play a part, and the simulation visualises these differences.
|
||||
documentation_link = https://wiki.helioadditive.com/en/FAQ
|
||||
image = images/dailytips_helio1.png
|
||||
|
||||
[hint: Extrusion Temp Model]
|
||||
text = Extrusion Temp Model\nMaterial properties shape the melt curve, but printer geometry decides how much heat the filament actually gains, so the model is material-specific and printer-calibrated.
|
||||
documentation_link = https://wiki.helioadditive.com/en/FAQ
|
||||
image = images/dailytips_helio2.png
|
||||
|
||||
[hint: Nozzle setting of 190 °C vs 320 °C?]
|
||||
text = Nozzle setting of 190 °C vs 320 °C?\nA 100 °C nozzle change only nudges the thermal index because extrusion temp, flow rate and post-deposition cooling dominate the part’s heat history.
|
||||
documentation_link = https://wiki.helioadditive.com/en/FAQ
|
||||
image = images/dailytips_helio3.png
|
||||
|
||||
[hint: Bed Temperature influence]
|
||||
text = Bed Temperature influence\nOnly the first-layer bed temp feeds the model right now; later bed changes aren’t yet captured.
|
||||
documentation_link = https://wiki.helioadditive.com/en/FAQ
|
||||
image = images/dailytips_helio0.png
|
||||
|
||||
[hint: Actual Tool-Path]
|
||||
text = Actual Tool-Path\nYes—your exact G-code path, speeds and fan commands are simulated.
|
||||
documentation_link = https://wiki.helioadditive.com/en/FAQ
|
||||
image = images/dailytips_helio1.png
|
||||
|
||||
[hint: Mesh Resolution]
|
||||
text = Mesh Resolution\nThe voxel grid is finer than the G-code line spacing, capturing layer-by-layer detail without wasting compute.
|
||||
documentation_link = https://wiki.helioadditive.com/en/FAQ
|
||||
image = images/dailytips_helio2.png
|
||||
|
||||
[hint: Shrinkage, Warping & Stress]
|
||||
text = Shrinkage, Warping & Stress\nBy controlling the thermal index you can remove the heat-driven causes of warp and stress.
|
||||
documentation_link = https://wiki.helioadditive.com/en/flowchart
|
||||
image = images/dailytips_helio3.png
|
||||
329
resources/flush/flush_data_dual_highflow.txt
Normal file
@@ -0,0 +1,329 @@
|
||||
colors
|
||||
#000000 #FFFFFF #545454 #8E9089 #C12E1F #F4EE2A #0086D6 #F7E6DE #4479fb #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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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
|
||||
#4479fb #000000 120
|
||||
#4479fb #FFFFFF 690
|
||||
#4479fb #545454 330
|
||||
#4479fb #8E9089 330
|
||||
#4479fb #C12E1F 270
|
||||
#4479fb #F4EE2A 480
|
||||
#4479fb #0086D6 750
|
||||
#4479fb #F7E6DE 900
|
||||
#4479fb #5E43B7 450
|
||||
#4479fb #482960 210
|
||||
#4479fb #0056B8 240
|
||||
#4479fb #FEC600 420
|
||||
#4479fb #F5547C 390
|
||||
#4479fb #6F5034 210
|
||||
#4479fb #FF9016 420
|
||||
#4479fb #00B1B7 390
|
||||
#4479fb #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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb #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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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
|
||||
#4479fb #000000 150
|
||||
#4479fb #FFFFFF 900
|
||||
#4479fb #545454 240
|
||||
#4479fb #8E9089 330
|
||||
#4479fb #C12E1F 210
|
||||
#4479fb #F4EE2A 270
|
||||
#4479fb #F7E6DE 360
|
||||
#4479fb #5E43B7 180
|
||||
#4479fb #482960 180
|
||||
#4479fb #0056B8 240
|
||||
#4479fb #FEC600 300
|
||||
#4479fb #EC008C 300
|
||||
#4479fb #F5547C 390
|
||||
#4479fb #6F5034 180
|
||||
#4479fb #FF9016 300
|
||||
#4479fb #00B1B7 360
|
||||
#4479fb #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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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 #4479fb 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
|
||||
@@ -1,14 +1,14 @@
|
||||
colors
|
||||
#000000 #C12E1F #00AE42 #545454 #D1D3D5 #5B6579 #F4EE2A #9D432C #5E43B7 #0A2989 #FF6A13 #8E9089
|
||||
#000000 #C12E1F #4479fb #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
|
||||
#4479fb #D1D3D5 330
|
||||
#4479fb #F4EE2A 240
|
||||
#4479fb #FF6A13 270
|
||||
#545454 #4479fb 180
|
||||
#545454 #D1D3D5 240
|
||||
#545454 #F4EE2A 270
|
||||
#545454 #5E43B7 120
|
||||
@@ -17,7 +17,7 @@ src dst flush
|
||||
#D1D3D5 #F4EE2A 120
|
||||
#D1D3D5 #FF6A13 150
|
||||
#5B6579 #C12E1F 120
|
||||
#5B6579 #00AE42 90
|
||||
#5B6579 #4479fb 90
|
||||
#5B6579 #D1D3D5 120
|
||||
#5B6579 #F4EE2A 180
|
||||
#5B6579 #9D432C 120
|
||||
@@ -26,22 +26,22 @@ src dst flush
|
||||
#5B6579 #8E9089 90
|
||||
#F4EE2A #000000 120
|
||||
#F4EE2A #C12E1F 90
|
||||
#F4EE2A #00AE42 150
|
||||
#F4EE2A #4479fb 150
|
||||
#F4EE2A #9D432C 150
|
||||
#F4EE2A #FF6A13 90
|
||||
#9D432C #00AE42 240
|
||||
#9D432C #4479fb 240
|
||||
#9D432C #D1D3D5 300
|
||||
#9D432C #F4EE2A 270
|
||||
#9D432C #FF6A13 180
|
||||
#9D432C #8E9089 210
|
||||
#5E43B7 #00AE42 180
|
||||
#5E43B7 #4479fb 180
|
||||
#5E43B7 #D1D3D5 270
|
||||
#5E43B7 #F4EE2A 270
|
||||
#5E43B7 #9D432C 150
|
||||
#5E43B7 #FF6A13 270
|
||||
#5E43B7 #8E9089 210
|
||||
#0A2989 #C12E1F 330
|
||||
#0A2989 #00AE42 210
|
||||
#0A2989 #4479fb 210
|
||||
#0A2989 #545454 150
|
||||
#0A2989 #D1D3D5 450
|
||||
#0A2989 #5B6579 240
|
||||
@@ -55,7 +55,7 @@ src dst flush
|
||||
#FF6A13 #9D432C 120
|
||||
#FF6A13 #8E9089 180
|
||||
#8E9089 #C12E1F 150
|
||||
#8E9089 #00AE42 120
|
||||
#8E9089 #4479fb 120
|
||||
#8E9089 #D1D3D5 150
|
||||
#8E9089 #F4EE2A 270
|
||||
#8E9089 #FF6A13 150
|
||||
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 |
3
resources/images/advanced_option1.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="18" height="19" viewBox="0 0 18 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.4742 9.15669C12.7353 9.41782 12.7353 9.84008 12.4742 10.0984L7.14038 15.435C6.87924 15.6961 6.45698 15.6961 6.19863 15.435C5.94027 15.1739 5.93749 14.7516 6.19863 14.4933L11.0602 9.63173L6.19585 4.76742C5.93472 4.50628 5.93472 4.08403 6.19585 3.82567C6.45698 3.56731 6.87924 3.56454 7.1376 3.82567L12.4742 9.15669Z" fill="#262E30"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 449 B |
3
resources/images/advanced_option1_disable.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="18" height="19" viewBox="0 0 18 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.4742 9.15669C12.7353 9.41782 12.7353 9.84008 12.4742 10.0984L7.14038 15.435C6.87924 15.6961 6.45698 15.6961 6.19863 15.435C5.94027 15.1739 5.93749 14.7516 6.19863 14.4933L11.0602 9.63173L6.19585 4.76742C5.93472 4.50628 5.93472 4.08403 6.19585 3.82567C6.45698 3.56731 6.87924 3.56454 7.1376 3.82567L12.4742 9.15669Z" fill="#CECECE"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 449 B |
3
resources/images/advanced_option2.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="19" height="19" viewBox="0 0 19 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10.0084 12.6962C9.74722 12.9574 9.32496 12.9574 9.0666 12.6962L3.73003 7.36244C3.4689 7.10131 3.4689 6.67905 3.73003 6.4207C3.99116 6.16234 4.41342 6.15956 4.67178 6.4207L9.53331 11.2822L14.3976 6.41792C14.6588 6.15678 15.081 6.15678 15.3394 6.41792C15.5977 6.67905 15.6005 7.10131 15.3394 7.35967L10.0084 12.6962Z" fill="#262E30"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 446 B |
3
resources/images/advanced_option3.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="19" height="20" viewBox="0 0 19 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.9742 9.65669C13.2353 9.91782 13.2353 10.3401 12.9742 10.5984L7.64038 15.935C7.37924 16.1961 6.95698 16.1961 6.69863 15.935C6.44027 15.6739 6.43749 15.2516 6.69863 14.9933L11.5602 10.1317L6.69585 5.26742C6.43472 5.00628 6.43472 4.58403 6.69585 4.32567C6.95698 4.06731 7.37924 4.06454 7.6376 4.32567L12.9742 9.65669Z" fill="#4479fb"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 449 B |
3
resources/images/advanced_option4.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10.5084 13.1962C10.2472 13.4574 9.82496 13.4574 9.5666 13.1962L4.23003 7.86242C3.9689 7.60129 3.9689 7.17903 4.23003 6.92068C4.49116 6.66232 4.91342 6.65954 5.17178 6.92068L10.0333 11.7822L14.8976 6.9179C15.1588 6.65676 15.581 6.65676 15.8394 6.9179C16.0977 7.17903 16.1005 7.60129 15.8394 7.85965L10.5084 13.1962Z" fill="#4479fb"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 446 B |
4
resources/images/align_x_center.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="36" height="36" rx="4" fill="#F4F4F4"/>
|
||||
<path d="M18 8.47925C18.391 8.47942 18.7079 8.79624 18.708 9.18726V10.9539H22.1826C22.6427 10.9539 23.0164 11.3268 23.0166 11.7869V16.3152C23.0166 16.7754 22.6429 17.1492 22.1826 17.1492H18.708V19.3162H24.459C24.9192 19.3162 25.293 19.6899 25.293 20.1501V24.9207C25.293 25.3809 24.9192 25.7537 24.459 25.7537H18.708V26.8123C18.708 27.2033 18.3911 27.5211 18 27.5212C17.6088 27.5212 17.291 27.2035 17.291 26.8123V25.7537H11.541C11.0808 25.7537 10.707 25.3809 10.707 24.9207V20.1501C10.707 19.6899 11.0808 19.3162 11.541 19.3162H17.291V17.1492H14.041C13.5809 17.1491 13.208 16.7754 13.208 16.3152V11.7869C13.2082 11.3268 13.581 10.954 14.041 10.9539H17.291V9.18726C17.2911 8.79613 17.6089 8.47925 18 8.47925ZM12.124 24.3376H23.876V20.7332H12.124V24.3376ZM14.625 15.7322H21.5996V12.3708H14.625V15.7322Z" fill="#808080"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 974 B |
4
resources/images/align_x_center_dark.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="36" height="36" rx="4" fill="#3E3E46"/>
|
||||
<path d="M18 8.47949C18.391 8.47967 18.7079 8.79648 18.708 9.1875V10.9541H22.1826C22.6427 10.9541 23.0164 11.327 23.0166 11.7871V16.3154C23.0166 16.7757 22.6429 17.1494 22.1826 17.1494H18.708V19.3164H24.459C24.9192 19.3164 25.293 19.6902 25.293 20.1504V24.9209C25.293 25.3811 24.9192 25.7539 24.459 25.7539H18.708V26.8125C18.708 27.2036 18.3911 27.5213 18 27.5215C17.6088 27.5215 17.291 27.2037 17.291 26.8125V25.7539H11.541C11.0808 25.7539 10.707 25.3811 10.707 24.9209V20.1504C10.707 19.6902 11.0808 19.3164 11.541 19.3164H17.291V17.1494H14.041C13.5809 17.1493 13.208 16.7756 13.208 16.3154V11.7871C13.2082 11.3271 13.581 10.9542 14.041 10.9541H17.291V9.1875C17.2911 8.79637 17.6089 8.47949 18 8.47949ZM12.124 24.3379H23.876V20.7334H12.124V24.3379ZM14.625 15.7324H21.5996V12.3711H14.625V15.7324Z" fill="#E9E9E9"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 972 B |
4
resources/images/align_x_max.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="36" height="36" rx="4" fill="#F4F4F4"/>
|
||||
<path d="M25.3389 9.89136C24.9478 9.89153 24.6309 10.2092 24.6309 10.6003V25.4001C24.6309 25.7912 24.9478 26.109 25.3389 26.1091C25.7301 26.1091 26.0479 25.7913 26.0479 25.4001V10.6003C26.0479 10.2091 25.7301 9.89136 25.3389 9.89136ZM10.7861 18.9626C10.326 18.9627 9.95326 19.3356 9.95312 19.7957V24.5671C9.95322 25.0273 10.326 25.4001 10.7861 25.4001H21.9795C22.4397 25.4001 22.8124 25.0273 22.8125 24.5671V19.7957C22.8124 19.3355 22.4396 18.9626 21.9795 18.9626H10.7861ZM21.3965 23.9832H11.3691V20.3796H21.3965V23.9832ZM16.5322 10.6003C16.072 10.6003 15.6982 10.9731 15.6982 11.4333V15.9617C15.6982 16.4219 16.072 16.7947 16.5322 16.7947H21.9795C22.4397 16.7947 22.8125 16.4219 22.8125 15.9617V11.4333C22.8125 10.9731 22.4397 10.6003 21.9795 10.6003H16.5322ZM21.3965 15.3787H17.1152V12.0164H21.3965V15.3787Z" fill="#808080"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 984 B |