Compare commits
32 Commits
Version-1.
...
v2.00.03.5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
1
.gitignore
vendored
@@ -27,3 +27,4 @@ SVG
|
|||||||
**/process_full/
|
**/process_full/
|
||||||
**/machine_full/
|
**/machine_full/
|
||||||
**/filament_full/
|
**/filament_full/
|
||||||
|
.idea/
|
||||||
|
|||||||
@@ -84,17 +84,26 @@ fi
|
|||||||
|
|
||||||
DISTRIBUTION=$(awk -F= '/^ID=/ {print $2}' /etc/os-release)
|
DISTRIBUTION=$(awk -F= '/^ID=/ {print $2}' /etc/os-release)
|
||||||
VERSION=$(awk -F= '/^VERSION_ID=/ {print $2}' /etc/os-release)
|
VERSION=$(awk -F= '/^VERSION_ID=/ {print $2}' /etc/os-release)
|
||||||
# treat ubuntu as debian
|
# OSLIKE is a space-delineated list of similar distributions
|
||||||
if [ "${DISTRIBUTION}" == "ubuntu" ]
|
OSLIKE=$(awk -F= '/^ID_LIKE=/ {print $2}' /etc/os-release | tr -d '"')
|
||||||
then
|
|
||||||
DISTRIBUTION="debian"
|
# Iterate over a list of candidate distribution targets, first match is used
|
||||||
fi
|
for CANDIDATE in ${DISTRIBUTION} ${OSLIKE}; do
|
||||||
if [ ! -f ./linux.d/${DISTRIBUTION} ]
|
if [ -f ./linux.d/${CANDIDATE} ]
|
||||||
|
then
|
||||||
|
TARGET_DISTRO="${CANDIDATE}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z ${TARGET_DISTRO} ]
|
||||||
then
|
then
|
||||||
echo "Your distribution does not appear to be currently supported by these build scripts"
|
echo "Your distribution does not appear to be currently supported by these build scripts"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
source ./linux.d/${DISTRIBUTION}
|
|
||||||
|
echo "OS distribution is '${DISTRIBUTION}'. Using package dependencies for '${TARGET_DISTRO}'."
|
||||||
|
source ./linux.d/${TARGET_DISTRO}
|
||||||
|
|
||||||
echo "FOUND_GTK3=${FOUND_GTK3}"
|
echo "FOUND_GTK3=${FOUND_GTK3}"
|
||||||
if [[ -z "${FOUND_GTK3_DEV}" ]]
|
if [[ -z "${FOUND_GTK3_DEV}" ]]
|
||||||
|
|||||||
@@ -504,7 +504,7 @@ find_package(cereal REQUIRED)
|
|||||||
set(L10N_DIR "${SLIC3R_RESOURCES_DIR}/i18n")
|
set(L10N_DIR "${SLIC3R_RESOURCES_DIR}/i18n")
|
||||||
set(QDT_L18N_DIR "${CMAKE_CURRENT_SOURCE_DIR}/qdt/i18n")
|
set(QDT_L18N_DIR "${CMAKE_CURRENT_SOURCE_DIR}/qdt/i18n")
|
||||||
add_custom_target(gettext_make_pot
|
add_custom_target(gettext_make_pot
|
||||||
COMMAND xgettext --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost
|
COMMAND xgettext --keyword=L --no-wrap --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost
|
||||||
-f "${QDT_L18N_DIR}/list.txt"
|
-f "${QDT_L18N_DIR}/list.txt"
|
||||||
-o "${QDT_L18N_DIR}/QIDIStudio.pot"
|
-o "${QDT_L18N_DIR}/QIDIStudio.pot"
|
||||||
COMMAND hintsToPot ${SLIC3R_RESOURCES_DIR} ${QDT_L18N_DIR}
|
COMMAND hintsToPot ${SLIC3R_RESOURCES_DIR} ${QDT_L18N_DIR}
|
||||||
@@ -521,7 +521,7 @@ foreach(po_file ${QDT_L10N_PO_FILES})
|
|||||||
SET(po_new_file "${po_dir}/QIDIStudio_.po")
|
SET(po_new_file "${po_dir}/QIDIStudio_.po")
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET gettext_merge_po_with_pot PRE_BUILD
|
TARGET gettext_merge_po_with_pot PRE_BUILD
|
||||||
COMMAND msgmerge -N -o ${po_file} ${po_file} "${QDT_L18N_DIR}/QIDIStudio.pot"
|
COMMAND msgmerge --no-wrap -N -o ${po_file} ${po_file} "${QDT_L18N_DIR}/QIDIStudio.pot"
|
||||||
DEPENDS ${po_file}
|
DEPENDS ${po_file}
|
||||||
)
|
)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ set -x
|
|||||||
# the simplicity of a single Docker image and a one-time compilation
|
# the simplicity of a single Docker image and a one-time compilation
|
||||||
# seems better.
|
# seems better.
|
||||||
docker build -t qidistudio \
|
docker build -t qidistudio \
|
||||||
--build-arg USER=$USER \
|
--build-arg USER=${USER:-root} \
|
||||||
--build-arg UID=$(id -u) \
|
--build-arg UID=$(id -u) \
|
||||||
--build-arg GID=$(id -g) \
|
--build-arg GID=$(id -g) \
|
||||||
$PROJECT_ROOT
|
$PROJECT_ROOT
|
||||||
|
|||||||
81
DockerEntrypoint.sh
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Entrypoint script to create an out-of-the-box experience for QIDIStudio.
|
||||||
|
# Perform some initial setup if none was done previously.
|
||||||
|
# It is not necessary if you know what you are doing. Feel free to go
|
||||||
|
# to the Dockerfile and switch the entrypoint to the QIDIStudio binary.
|
||||||
|
|
||||||
|
# Check if the current effective user is root
|
||||||
|
|
||||||
|
if [ "$EUID" -eq 0 ]; then
|
||||||
|
echo "No User specified at build time."
|
||||||
|
if [ -z "$RUN_USER" ] || [ -z "$RUN_UID" ] || [ -z "$RUN_GID" ] || [ "$RUN_UID" -eq 0 ]; then
|
||||||
|
echo "At least one of RUN_USER, RUN_UID, or RUN_GID is unset. Or 'root' was requested."
|
||||||
|
echo "Running as root"
|
||||||
|
|
||||||
|
if [ "$HOME" != "/root" ]; then
|
||||||
|
if [ ! -d "/root" ]; then
|
||||||
|
mkdir /root
|
||||||
|
chown root:root /root
|
||||||
|
chmod 700 /root
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
export HOME="/root"
|
||||||
|
EXEC_USER="root"
|
||||||
|
else
|
||||||
|
echo "Setting up a new user"
|
||||||
|
|
||||||
|
# Check if there is a already a valid user entry for the passed UID, if not create one
|
||||||
|
if [ -z "$(getent passwd "$RUN_UID" | cut -d: -f1)" ]; then
|
||||||
|
#GID=$(id -g)
|
||||||
|
echo "User specified at runtime. Performing setup."
|
||||||
|
groupadd -g "$RUN_GID" "$RUN_USER"
|
||||||
|
useradd -u "$RUN_UID" -g "$RUN_GID" -d "/home/$RUN_USER" "$RUN_USER"
|
||||||
|
usermod -aG sudo "$RUN_USER"
|
||||||
|
passwd -d "$RUN_USER"
|
||||||
|
|
||||||
|
#This will take forever to run, so we will just chown the build folder which contains the binaries
|
||||||
|
#chown -R "$RUN_UID":"$RUN_GID" /QIDIStudio
|
||||||
|
chown "$RUN_UID":"$RUN_GID" /QIDIStudio
|
||||||
|
chown -R "$RUN_UID":"$RUN_GID" /QIDIStudio/build
|
||||||
|
|
||||||
|
|
||||||
|
export HOME="/home/$RUN_USER"
|
||||||
|
EXEC_USER="$RUN_USER"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "User specified at build time."
|
||||||
|
CURRENT_USER=$(id -un)
|
||||||
|
if [ -n "$RUN_USER" ] && [ -n "$RUN_UID" ] && [ -n "$RUN_GID" ] && [ "$RUN_UID" -ne "$EUID" ]; then
|
||||||
|
echo "New User config passed at Runtime. Setting up."
|
||||||
|
if [ -z "$(getent passwd "$RUN_UID" | cut -d: -f1)" ]; then
|
||||||
|
sudo groupadd -g "$RUN_UID" "$RUN_USER"
|
||||||
|
sudo useradd -u "$RUN_UID" -g "$RUN_GID" -d "/home/$RUN_USER" "$RUN_USER"
|
||||||
|
sudo usermod -aG sudo "$RUN_USER"
|
||||||
|
passwd -d "$RUN_USER"
|
||||||
|
|
||||||
|
#sudo chown -R "$RUN_UID":"$RUN_GID" /QIDIStudio
|
||||||
|
chown "$RUN_UID":"$RUN_GID" /QIDIStudio
|
||||||
|
chown -R "$RUN_UID":"$RUN_GID" /QIDIStudio/build
|
||||||
|
|
||||||
|
export HOME="/home/$RUN_USER"
|
||||||
|
EXEC_USER="$RUN_USER"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Using Build time user."
|
||||||
|
EXEC_USER="$CURRENT_USER"
|
||||||
|
#It should've been set in Dockerfile, but just in case, uncomment this it there is problem
|
||||||
|
#export HOME="/home/$USER"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# make sure ~/.config folder exists so QIDI Studio will start
|
||||||
|
if [ ! -d "$HOME/.config" ]; then
|
||||||
|
mkdir -p "$HOME/.config"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Using su $USER -c will retain all the important ENV args when qidi Studio starts in a different shell
|
||||||
|
# Continue with QIDI Studio using correct user, passing all arguments
|
||||||
|
exec su "$EXEC_USER" -c "/QIDIStudio/build/package/bin/qidi-studio $*"
|
||||||
16
DockerRun.sh
@@ -5,15 +5,24 @@ set -x
|
|||||||
# -h $HOSTNAME \
|
# -h $HOSTNAME \
|
||||||
# If there's problems with the X display, try this
|
# If there's problems with the X display, try this
|
||||||
# -v /tmp/.X11-unix:/tmp/.X11-unix \
|
# -v /tmp/.X11-unix:/tmp/.X11-unix \
|
||||||
|
# or
|
||||||
|
# -v $HOME/.Xauthority:/root/.Xauthority \
|
||||||
|
# You also need to run "xhost +" on your host system
|
||||||
|
# QIDI Studio also require the parent directory for the configuration directory to be present to start
|
||||||
|
# to prevent your local machines's QIDI studio config passed to docker container when you map your home directory, add:
|
||||||
|
# -v :SHOME/.config/QIDIStudio
|
||||||
|
set -x
|
||||||
docker run \
|
docker run \
|
||||||
`# Use the hosts networking. Printer wifi and also dbus communication` \
|
`# Use the hosts networking. Printer wifi and also dbus communication` \
|
||||||
--net=host \
|
--net=host \
|
||||||
`# Some X installs will not have permissions to talk to sockets for shared memory` \
|
`# Some X installs will not have permissions to talk to sockets for shared memory` \
|
||||||
--ipc host \
|
--ipc host \
|
||||||
`# Run as your workstations username to keep permissions the same` \
|
|
||||||
-u $USER \
|
|
||||||
`# Bind mount your home directory into the container for loading/saving files` \
|
`# Bind mount your home directory into the container for loading/saving files` \
|
||||||
-v $HOME:/home/$USER \
|
-v $HOME:$HOME \
|
||||||
|
`# Pass some X Auth file to allow x11 to connect to your host x instance` \
|
||||||
|
-v $HOME/.Xauthority:/tmp/.Xauthority \
|
||||||
|
-v /tmp/.X11-unix:/tmp/.X11-unix \
|
||||||
|
-e XAUTHORITY=/tmp/.Xauthority \
|
||||||
`# Pass the X display number to the container` \
|
`# Pass the X display number to the container` \
|
||||||
-e DISPLAY=$DISPLAY \
|
-e DISPLAY=$DISPLAY \
|
||||||
`# It seems that libGL and dbus things need privileged mode` \
|
`# It seems that libGL and dbus things need privileged mode` \
|
||||||
@@ -24,4 +33,3 @@ docker run \
|
|||||||
--rm \
|
--rm \
|
||||||
`# Pass all parameters from this script to the qidi ENTRYPOINT binary` \
|
`# Pass all parameters from this script to the qidi ENTRYPOINT binary` \
|
||||||
qidistudio $*
|
qidistudio $*
|
||||||
|
|
||||||
|
|||||||
69
Dockerfile
@@ -1,5 +1,4 @@
|
|||||||
FROM docker.io/ubuntu:22.04
|
FROM docker.io/ubuntu:24.10
|
||||||
LABEL maintainer "DeftDawg <DeftDawg@gmail.com>"
|
|
||||||
|
|
||||||
# Disable interactive package configuration
|
# Disable interactive package configuration
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
@@ -14,6 +13,7 @@ RUN apt-get update && apt-get install -y \
|
|||||||
build-essential \
|
build-essential \
|
||||||
cmake \
|
cmake \
|
||||||
curl \
|
curl \
|
||||||
|
xvfb \
|
||||||
eglexternalplatform-dev \
|
eglexternalplatform-dev \
|
||||||
extra-cmake-modules \
|
extra-cmake-modules \
|
||||||
file \
|
file \
|
||||||
@@ -39,7 +39,6 @@ RUN apt-get update && apt-get install -y \
|
|||||||
libssl-dev \
|
libssl-dev \
|
||||||
libudev-dev \
|
libudev-dev \
|
||||||
libwayland-dev \
|
libwayland-dev \
|
||||||
libwebkit2gtk-4.0-dev \
|
|
||||||
libxkbcommon-dev \
|
libxkbcommon-dev \
|
||||||
locales \
|
locales \
|
||||||
locales-all \
|
locales-all \
|
||||||
@@ -47,6 +46,7 @@ RUN apt-get update && apt-get install -y \
|
|||||||
pkgconf \
|
pkgconf \
|
||||||
sudo \
|
sudo \
|
||||||
wayland-protocols \
|
wayland-protocols \
|
||||||
|
libwebkit2gtk-4.1-dev \
|
||||||
wget
|
wget
|
||||||
|
|
||||||
# Change your locale here if you want. See the output
|
# Change your locale here if you want. See the output
|
||||||
@@ -58,14 +58,52 @@ RUN locale-gen $LC_ALL
|
|||||||
# the CA cert path on every startup
|
# the CA cert path on every startup
|
||||||
ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
|
ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
|
||||||
|
|
||||||
COPY ./ QIDIStudio
|
COPY ./ /QIDIStudio
|
||||||
|
|
||||||
WORKDIR QIDIStudio
|
RUN chmod +x /QIDIStudio/DockerEntrypoint.sh
|
||||||
|
|
||||||
# These can run together, but we run them seperate for podman caching
|
WORKDIR /QIDIStudio
|
||||||
# Update System dependencies
|
|
||||||
|
# Ubuntu 24 Docker Image now come with default standard user "ubuntu"
|
||||||
|
# It might conflict with your mapped user, remove if user ubuntu exist
|
||||||
|
RUN if id "ubuntu" >/dev/null 2>&1; then userdel -r ubuntu; fi
|
||||||
|
|
||||||
|
|
||||||
|
# Use bash as the shell
|
||||||
|
|
||||||
|
# Set ARG values
|
||||||
|
# If user was passed from build it will create a user same
|
||||||
|
# as your workstation. Else it will use /root
|
||||||
|
|
||||||
|
# Setting ARG at build time is convienient for testing purposes
|
||||||
|
# otherwise the same commands will be executed at runtime
|
||||||
|
|
||||||
|
ARG USER=root
|
||||||
|
ARG UID=0
|
||||||
|
ARG GID=0
|
||||||
|
RUN if [ "$UID" != "0" ]; then \
|
||||||
|
groupadd -g $GID $USER && \
|
||||||
|
useradd -u $UID -g $GID -m -d /home/$USER $USER && \
|
||||||
|
mkdir -p /home/$USER && \
|
||||||
|
chown -R $UID:$GID /QIDIStudio && \
|
||||||
|
usermod -aG sudo $USER && \
|
||||||
|
passwd -d "$USER"; \
|
||||||
|
else \
|
||||||
|
mkdir -p /root/.config; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Allow password-less sudo for ALL users
|
||||||
|
RUN echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/999-passwordless
|
||||||
|
RUN chmod 440 /etc/sudoers.d/999-passwordless
|
||||||
|
|
||||||
|
# Update System dependencies(Run before user switch)
|
||||||
RUN ./BuildLinux.sh -u
|
RUN ./BuildLinux.sh -u
|
||||||
|
|
||||||
|
# Run as the mapped user (or root by default)
|
||||||
|
USER $USER
|
||||||
|
|
||||||
|
|
||||||
|
# These can run together, but we run them seperate for podman caching
|
||||||
# Build dependencies in ./deps
|
# Build dependencies in ./deps
|
||||||
RUN ./BuildLinux.sh -d
|
RUN ./BuildLinux.sh -d
|
||||||
|
|
||||||
@@ -73,7 +111,7 @@ RUN ./BuildLinux.sh -d
|
|||||||
RUN ./BuildLinux.sh -s
|
RUN ./BuildLinux.sh -s
|
||||||
|
|
||||||
# Build AppImage
|
# Build AppImage
|
||||||
ENV container podman
|
ENV container=podman
|
||||||
RUN ./BuildLinux.sh -i
|
RUN ./BuildLinux.sh -i
|
||||||
|
|
||||||
# It's easier to run QIDI Studio as the same username,
|
# It's easier to run QIDI Studio as the same username,
|
||||||
@@ -82,13 +120,14 @@ RUN ./BuildLinux.sh -i
|
|||||||
# to keep permissions the same. Just in case, defaults
|
# to keep permissions the same. Just in case, defaults
|
||||||
# are root.
|
# are root.
|
||||||
SHELL ["/bin/bash", "-l", "-c"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
ARG USER=root
|
|
||||||
ARG UID=0
|
# Point FFMPEG Library search to the binary built upon QIDIStudio build time
|
||||||
ARG GID=0
|
ENV LD_LIBRARY_PATH=/QIDIStudio/build/package/bin
|
||||||
RUN [[ "$UID" != "0" ]] \
|
|
||||||
&& groupadd -f -g $GID $USER \
|
|
||||||
&& useradd -u $UID -g $GID $USER
|
|
||||||
|
|
||||||
# Using an entrypoint instead of CMD because the binary
|
# Using an entrypoint instead of CMD because the binary
|
||||||
# accepts several command line arguments.
|
# accepts several command line arguments.
|
||||||
ENTRYPOINT ["/QIDIStudio/build/package/bin/qidi-studio"]
|
# entrypoint script will pass all arguments to QIDI-studio
|
||||||
|
# after the script finishes
|
||||||
|
|
||||||
|
#ENTRYPOINT ["/QIDIStudio/build/package/bin/QIDI-studio"]
|
||||||
|
ENTRYPOINT ["/QIDIStudio/DockerEntrypoint.sh"]
|
||||||
|
|||||||
@@ -2,30 +2,35 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
<string>English</string>
|
<string>English</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
||||||
<key>CFBundleGetInfoString</key>
|
<key>CFBundleGetInfoString</key>
|
||||||
<string>${MACOSX_BUNDLE_INFO_STRING}</string>
|
<string>${MACOSX_BUNDLE_INFO_STRING}</string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
|
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>com.qiditech.qidi-studio</string>
|
<string>com.qiditech.qidi-studio</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
<string>6.0</string>
|
<string>6.0</string>
|
||||||
<key>CFBundleLongVersionString</key>
|
<key>CFBundleLongVersionString</key>
|
||||||
<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
|
<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
|
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
|
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
|
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
|
||||||
|
<key>NSAppTransportSecurity</key>
|
||||||
|
<dict>
|
||||||
|
<key>NSAllowsArbitraryLoads</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
<key>CFBundleURLTypes</key>
|
<key>CFBundleURLTypes</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
|
|||||||
2
deps/Boost/Boost.cmake
vendored
@@ -129,7 +129,7 @@ list(APPEND _patch_command COMMAND git init && ${PATCH_CMD} ${CMAKE_CURRENT_LIST
|
|||||||
ExternalProject_Add(
|
ExternalProject_Add(
|
||||||
dep_Boost
|
dep_Boost
|
||||||
#URL "https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.zip"
|
#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 "https://github.com/bambulab/boost/releases/download/1.78.0/boost_1_78_0.zip"
|
||||||
URL_HASH SHA256=f22143b5528e081123c3c5ed437e92f648fe69748e95fa6e2bd41484e2986cc3
|
URL_HASH SHA256=f22143b5528e081123c3c5ed437e92f648fe69748e95fa6e2bd41484e2986cc3
|
||||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/Boost
|
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/Boost
|
||||||
CONFIGURE_COMMAND "${_bootstrap_cmd}"
|
CONFIGURE_COMMAND "${_bootstrap_cmd}"
|
||||||
|
|||||||
2
deps/FFMPEG/FFMPEG.cmake
vendored
@@ -4,7 +4,7 @@ if (MSVC)
|
|||||||
set(_dstdir ${DESTDIR}/usr/local)
|
set(_dstdir ${DESTDIR}/usr/local)
|
||||||
set(_source_dir "${CMAKE_BINARY_DIR}/dep_FFMPEG-prefix/src/dep_FFMPEG")
|
set(_source_dir "${CMAKE_BINARY_DIR}/dep_FFMPEG-prefix/src/dep_FFMPEG")
|
||||||
ExternalProject_Add(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
|
URL_HASH SHA256=DF44AE6B97CE84C720695AE7F151B4A9654915D1841C68F10D62A1189E0E7181
|
||||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/FFMPEG
|
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/FFMPEG
|
||||||
CONFIGURE_COMMAND ""
|
CONFIGURE_COMMAND ""
|
||||||
|
|||||||
2
deps/GMP/GMP.cmake
vendored
@@ -43,7 +43,7 @@ else ()
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
ExternalProject_Add(dep_GMP
|
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
|
URL_HASH SHA256=705ae57ee2014b2c6fc0f572c85ee43276b99b6b256ee16c1a9d3a8c4e3609d5
|
||||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/GMP
|
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/GMP
|
||||||
BUILD_IN_SOURCE ON
|
BUILD_IN_SOURCE ON
|
||||||
|
|||||||
24
deps/OCCT/0001-OCCT-fix.patch
vendored
@@ -195,3 +195,27 @@ index 5ae9899f..0a17372b 100644
|
|||||||
|
|
||||||
if (!myFTLib->IsValid())
|
if (!myFTLib->IsValid())
|
||||||
{
|
{
|
||||||
|
From 7236e83dcc1e7284e66dc61e612154617ef715d6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: dpasukhi <dpasukhi@opencascade.com>
|
||||||
|
Date: Tue, 27 Aug 2024 11:33:29 +0100
|
||||||
|
Subject: [PATCH] 0033808: Coding - FreeType Use unsigned point and contour
|
||||||
|
indexing in `FT_Outline`
|
||||||
|
|
||||||
|
Changes to auto instead of specific type
|
||||||
|
---
|
||||||
|
src/StdPrs/StdPrs_BRepFont.cxx | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/StdPrs/StdPrs_BRepFont.cxx b/src/StdPrs/StdPrs_BRepFont.cxx
|
||||||
|
index ab2d9b3c9f..cd701879b1 100644
|
||||||
|
--- a/src/StdPrs/StdPrs_BRepFont.cxx
|
||||||
|
+++ b/src/StdPrs/StdPrs_BRepFont.cxx
|
||||||
|
@@ -457,7 +457,7 @@ Standard_Boolean StdPrs_BRepFont::renderGlyph (const Standard_Utf32Char theChar,
|
||||||
|
for (short aContour = 0, aStartIndex = 0; aContour < anOutline->n_contours; ++aContour)
|
||||||
|
{
|
||||||
|
const FT_Vector* aPntList = &anOutline->points[aStartIndex];
|
||||||
|
- const char* aTags = &anOutline->tags[aStartIndex];
|
||||||
|
+ const auto* aTags = &anOutline->tags[aStartIndex];
|
||||||
|
const short anEndIndex = anOutline->contours[aContour];
|
||||||
|
const short aPntsNb = (anEndIndex - aStartIndex) + 1;
|
||||||
|
aStartIndex = anEndIndex + 1;
|
||||||
2
deps/OCCT/OCCT.cmake
vendored
@@ -8,7 +8,7 @@ qidistudio_add_cmake_project(OCCT
|
|||||||
URL https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_0.zip
|
URL https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_0.zip
|
||||||
URL_HASH SHA256=28334f0e98f1b1629799783e9b4d21e05349d89e695809d7e6dfa45ea43e1dbc
|
URL_HASH SHA256=28334f0e98f1b1629799783e9b4d21e05349d89e695809d7e6dfa45ea43e1dbc
|
||||||
#PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch
|
#PATCH_COMMAND ${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_EXECUTABLE} apply --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch
|
||||||
#DEPENDS dep_Boost
|
#DEPENDS dep_Boost
|
||||||
#DEPENDS dep_FREETYPE
|
#DEPENDS dep_FREETYPE
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
|
|||||||
2
deps/OpenCV/OpenCV.cmake
vendored
@@ -7,7 +7,7 @@ endif ()
|
|||||||
qidistudio_add_cmake_project(OpenCV
|
qidistudio_add_cmake_project(OpenCV
|
||||||
URL https://github.com/opencv/opencv/archive/refs/tags/4.6.0.tar.gz
|
URL https://github.com/opencv/opencv/archive/refs/tags/4.6.0.tar.gz
|
||||||
URL_HASH SHA256=1ec1cba65f9f20fe5a41fda1586e01c70ea0c9a6d7b67c9e13edf0cfe2239277
|
URL_HASH SHA256=1ec1cba65f9f20fe5a41fda1586e01c70ea0c9a6d7b67c9e13edf0cfe2239277
|
||||||
PATCH_COMMAND ${GIT_EXECUTABLE} apply --directory deps/build/dep_OpenCV-prefix/src/dep_OpenCV --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OpenCV-fix.patch
|
PATCH_COMMAND ${GIT_EXECUTABLE} apply --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OpenCV-fix.patch
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
-DBUILD_SHARED_LIBS=0
|
-DBUILD_SHARED_LIBS=0
|
||||||
-DBUILD_PERE_TESTS=OFF
|
-DBUILD_PERE_TESTS=OFF
|
||||||
|
|||||||
2
deps/wxWidgets/wxWidgets.cmake
vendored
@@ -23,7 +23,7 @@ endif ()
|
|||||||
# endif ()
|
# endif ()
|
||||||
|
|
||||||
qidistudio_add_cmake_project(wxWidgets
|
qidistudio_add_cmake_project(wxWidgets
|
||||||
GIT_REPOSITORY "https://github.com/qiditech/wxWidgets"
|
GIT_REPOSITORY "https://github.com/bambulab/wxWidgets"
|
||||||
GIT_TAG master
|
GIT_TAG master
|
||||||
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${TIFF_PKG} ${JPEG_PKG}
|
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${TIFF_PKG} ${JPEG_PKG}
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
|
|||||||
@@ -7,8 +7,9 @@ namespace QIDIStudio {
|
|||||||
|
|
||||||
//QDS: only check wodth when dE is longer than this value
|
//QDS: only check wodth when dE is longer than this value
|
||||||
const double CHECK_WIDTH_E_THRESHOLD = 0.0025;
|
const double CHECK_WIDTH_E_THRESHOLD = 0.0025;
|
||||||
const double WIDTH_THRESHOLD = 0.02;
|
const double WIDTH_THRESHOLD = 0.05;
|
||||||
const double RADIUS_THRESHOLD = 0.005;
|
const double RADIUS_THRESHOLD = 0.005;
|
||||||
|
const double MULTI_NOZZLE_TEMP_THRESHOLD = 100;
|
||||||
|
|
||||||
const double filament_diameter = 1.75;
|
const double filament_diameter = 1.75;
|
||||||
const double Pi = 3.14159265358979323846;
|
const double Pi = 3.14159265358979323846;
|
||||||
@@ -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 Z_HEIGHT_TAG = " Z_HEIGHT: ";
|
||||||
const std::string Initial_Layer_Ptint_Height_Tag = " initial_layer_print_height =";
|
const std::string Initial_Layer_Ptint_Height_Tag = " initial_layer_print_height =";
|
||||||
const std::string Line_Width_Tag = " line_width =";
|
const std::string Line_Width_Tag = " line_width =";
|
||||||
|
const std::string Filament_Map_Tag = " filament_map =";
|
||||||
|
const std::string Physical_Extruder_Map_Tag = " physical_extruder_map =";
|
||||||
|
|
||||||
GCodeCheckResult GCodeChecker::parse_file(const std::string& path)
|
GCodeCheckResult GCodeChecker::parse_file(const std::string& path)
|
||||||
{
|
{
|
||||||
@@ -38,7 +41,11 @@ GCodeCheckResult GCodeChecker::parse_file(const std::string& path)
|
|||||||
}
|
}
|
||||||
std::string line_raw;
|
std::string line_raw;
|
||||||
std::string line;
|
std::string line;
|
||||||
|
int line_number = 0;
|
||||||
|
|
||||||
|
|
||||||
while (std::getline(file, line_raw)) {
|
while (std::getline(file, line_raw)) {
|
||||||
|
line_number++;
|
||||||
const char *c = line_raw.c_str();
|
const char *c = line_raw.c_str();
|
||||||
c = skip_whitespaces(c);
|
c = skip_whitespaces(c);
|
||||||
if (std::toupper(*c) == 'N')
|
if (std::toupper(*c) == 'N')
|
||||||
@@ -46,7 +53,8 @@ GCodeCheckResult GCodeChecker::parse_file(const std::string& path)
|
|||||||
c = skip_whitespaces(c);
|
c = skip_whitespaces(c);
|
||||||
line = c;
|
line = c;
|
||||||
if (parse_line(line) != GCodeCheckResult::Success) {
|
if (parse_line(line) != GCodeCheckResult::Success) {
|
||||||
std::cout << "Failed to parse line " << line_raw << std::endl;
|
std::cerr << "Failed to parse line " << line_number
|
||||||
|
<< ": " << line_raw << std::endl;
|
||||||
return GCodeCheckResult::ParseFailed;
|
return GCodeCheckResult::ParseFailed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -115,17 +123,39 @@ GCodeCheckResult GCodeChecker::parse_comment(GCodeLine& line)
|
|||||||
if (starts_with(comment, Extrusion_Role_Tag)) {
|
if (starts_with(comment, Extrusion_Role_Tag)) {
|
||||||
m_role = string_to_role(comment.substr(Extrusion_Role_Tag.length()));
|
m_role = string_to_role(comment.substr(Extrusion_Role_Tag.length()));
|
||||||
check_gap_infill_width = false;
|
check_gap_infill_width = false;
|
||||||
if (m_role == erExternalPerimeter) {
|
|
||||||
if (z_height == initial_layer_height && nozzle_temp != nozzle_temperature_initial_layer[filament_id]) {
|
|
||||||
std::cout << "invalid filament nozzle initial layer temperature comment with invalid value!" << std::endl;
|
|
||||||
return GCodeCheckResult::ParseFailed;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (z_height != initial_layer_height && nozzle_temp != nozzle_temperature[filament_id]) {
|
double check_nozzle_temp = 0.0f;
|
||||||
std::cout << "invalid filament nozzle temperature comment with invalid value!" << std::endl;
|
if (is_multi_nozzle == true) {
|
||||||
return GCodeCheckResult::ParseFailed;
|
check_nozzle_temp = multi_nozzle_temp[current_nozzle_id];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
check_nozzle_temp = nozzle_temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_role == erExternalPerimeter) {
|
||||||
|
if (z_height != initial_layer_height) {
|
||||||
|
if (is_multi_nozzle) {
|
||||||
|
double expected_temp = nozzle_temperature[filament_id];
|
||||||
|
if (std::abs(check_nozzle_temp - expected_temp) > MULTI_NOZZLE_TEMP_THRESHOLD) {
|
||||||
|
std::cout << "Multi-nozzle: Invalid filament nozzle temperature! Expected: "
|
||||||
|
<< expected_temp
|
||||||
|
<< ", but got: " << check_nozzle_temp
|
||||||
|
<< " (Threshold: ±100)." << std::endl;
|
||||||
|
return GCodeCheckResult::ParseFailed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (check_nozzle_temp != nozzle_temperature[filament_id]) {
|
||||||
|
std::cout << "Invalid filament nozzle temperature! Expected: "
|
||||||
|
<< nozzle_temperature[filament_id]
|
||||||
|
<< ", but got: " << check_nozzle_temp << "." << std::endl;
|
||||||
|
return GCodeCheckResult::ParseFailed;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (m_role == erGapFill) {
|
}
|
||||||
|
else if (m_role == erGapFill) {
|
||||||
check_gap_infill_width = true;
|
check_gap_infill_width = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,7 +219,36 @@ GCodeCheckResult GCodeChecker::parse_comment(GCodeLine& line)
|
|||||||
std::cout << "invalid nozzle temperature initial layer comment with invalid value!" << std::endl;
|
std::cout << "invalid nozzle temperature initial layer comment with invalid value!" << std::endl;
|
||||||
return GCodeCheckResult::ParseFailed;
|
return GCodeCheckResult::ParseFailed;
|
||||||
}
|
}
|
||||||
} else if (starts_with(comment, Z_HEIGHT_TAG)) {
|
}
|
||||||
|
else if (starts_with(comment, Filament_Map_Tag)) {
|
||||||
|
std::string str = comment.substr(Filament_Map_Tag.size() + 1);
|
||||||
|
if (!parse_double_from_str(str, filament_map)) {
|
||||||
|
std::cout << "invalid filament map comment with invalid value!" << std::endl;
|
||||||
|
return GCodeCheckResult::ParseFailed;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (size_t i = 0; i < filament_map.size(); ++i) {
|
||||||
|
filament_map[i] -= 1;
|
||||||
|
}
|
||||||
|
is_multi_nozzle = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (starts_with(comment, Physical_Extruder_Map_Tag)) {
|
||||||
|
std::string str = comment.substr(Physical_Extruder_Map_Tag.size() + 1);
|
||||||
|
std::vector<double>tmp;
|
||||||
|
|
||||||
|
if (!parse_double_from_str(str, tmp)){
|
||||||
|
std::cout << "invalid physical extruder map comment with invalid value!" << std::endl;
|
||||||
|
return GCodeCheckResult::ParseFailed;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t idx = 0; idx < tmp.size(); ++idx) {
|
||||||
|
physical_to_logic_extruder_map[(int)(tmp[idx])]= idx;
|
||||||
|
logic_to_physical_extruder_map[idx] = (int)(tmp[idx]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (starts_with(comment, Z_HEIGHT_TAG)) {
|
||||||
std::string str = comment.substr(Z_HEIGHT_TAG.size());
|
std::string str = comment.substr(Z_HEIGHT_TAG.size());
|
||||||
if (!parse_double_from_str(str, z_height)) {
|
if (!parse_double_from_str(str, z_height)) {
|
||||||
std::cout << "invalid z height comment with invalid value!" << std::endl;
|
std::cout << "invalid z height comment with invalid value!" << std::endl;
|
||||||
@@ -257,7 +316,7 @@ GCodeCheckResult GCodeChecker::parse_command(GCodeLine& gcode_line)
|
|||||||
case 'T':{
|
case 'T':{
|
||||||
|
|
||||||
int pt = ::atoi(&cmd[1]);
|
int pt = ::atoi(&cmd[1]);
|
||||||
if (pt == 1000 || pt == 1100 || pt == 255) {
|
if (pt == 1000 || pt == 1100 || pt == 255 || pt == 1001 || pt == 65535 || pt == 65279) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -267,9 +326,24 @@ GCodeCheckResult GCodeChecker::parse_command(GCodeLine& gcode_line)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
filament_id = pt;
|
filament_id = pt;
|
||||||
|
|
||||||
|
if (is_multi_nozzle == true) {
|
||||||
|
set_current_nozzle(pt);
|
||||||
|
}
|
||||||
|
|
||||||
flow_ratio = filament_flow_ratio[pt];
|
flow_ratio = filament_flow_ratio[pt];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 'S': {
|
||||||
|
if (cmd.compare(0, 4, "SYNC") == 0) {
|
||||||
|
// Valid SYNC command
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Invalid SYNC command
|
||||||
|
ret = GCodeCheckResult::ParseFailed;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
default: {
|
default: {
|
||||||
//QDS: other g command? impossible! must be invalid
|
//QDS: other g command? impossible! must be invalid
|
||||||
ret = GCodeCheckResult::ParseFailed;
|
ret = GCodeCheckResult::ParseFailed;
|
||||||
@@ -484,16 +558,39 @@ GCodeCheckResult GCodeChecker::parse_M104_M109(const GCodeLine &gcode_line)
|
|||||||
const char *c = gcode_line.m_raw.c_str();
|
const char *c = gcode_line.m_raw.c_str();
|
||||||
const char *rs = strchr(c,'S');
|
const char *rs = strchr(c,'S');
|
||||||
|
|
||||||
std::string str=rs;
|
std::string strS = rs;
|
||||||
str = str.substr(1);
|
strS = strS.substr(1);
|
||||||
for (int i = 0; i < str.size(); i++) {
|
for (int i = 0; i < strS.size(); i++) {
|
||||||
if (str[i] == ' ')
|
if (strS[i] == ' ')
|
||||||
str=str.substr(0,i);
|
strS = strS.substr(0,i);
|
||||||
}
|
}
|
||||||
if (!parse_double_from_str(str, nozzle_temp)) {
|
double temp_nozzle_temp;
|
||||||
|
|
||||||
|
if (!parse_double_from_str(strS, temp_nozzle_temp)) {
|
||||||
std::cout << "invalid nozzle temperature comment with invalid value!" << std::endl;
|
std::cout << "invalid nozzle temperature comment with invalid value!" << std::endl;
|
||||||
return GCodeCheckResult::ParseFailed;
|
return GCodeCheckResult::ParseFailed;
|
||||||
}
|
}
|
||||||
|
if (is_multi_nozzle == true) {
|
||||||
|
const char* rt = strchr(c, 'T');
|
||||||
|
if (rt) {
|
||||||
|
std::string strT = rt + 1; // 跳过 'T'
|
||||||
|
for (size_t i = 0; i < strT.size(); i++) {
|
||||||
|
if (strT[i] == ' ') {
|
||||||
|
strT = strT.substr(0, i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int logic_nozzle_id = physical_to_logic_extruder_map[std::stoi(strT)];
|
||||||
|
multi_nozzle_temp[logic_nozzle_id] = temp_nozzle_temp;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
multi_nozzle_temp[current_nozzle_id] = temp_nozzle_temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
nozzle_temp = temp_nozzle_temp;
|
||||||
|
}
|
||||||
|
|
||||||
return GCodeCheckResult::Success;
|
return GCodeCheckResult::Success;
|
||||||
}
|
}
|
||||||
@@ -689,6 +786,16 @@ GCodeCheckResult GCodeChecker::check_G0_G1_width(const GCodeLine& line)
|
|||||||
return GCodeCheckResult::Success;
|
return GCodeCheckResult::Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GCodeChecker::set_current_nozzle(int filament_id) {
|
||||||
|
if (filament_id >= 0 && filament_id < static_cast<int>(filament_map.size())) {
|
||||||
|
current_nozzle_id = filament_map[filament_id];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
std::cerr << "Error: filament_id is out of range!" << std::endl;
|
||||||
|
current_nozzle_id = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
GCodeCheckResult GCodeChecker::check_G2_G3_width(const GCodeLine& line)
|
GCodeCheckResult GCodeChecker::check_G2_G3_width(const GCodeLine& line)
|
||||||
{
|
{
|
||||||
auto absolute_position = [this](Axis axis, const GCodeLine& lineG2_3) {
|
auto absolute_position = [this](Axis axis, const GCodeLine& lineG2_3) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <array>
|
#include <array>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
namespace QIDIStudio {
|
namespace QIDIStudio {
|
||||||
|
|
||||||
@@ -116,6 +117,7 @@ private:
|
|||||||
GCodeCheckResult check_line_width(const GCodeLine& gcode_line);
|
GCodeCheckResult check_line_width(const GCodeLine& gcode_line);
|
||||||
GCodeCheckResult check_G0_G1_width(const GCodeLine& gcode_line);
|
GCodeCheckResult check_G0_G1_width(const GCodeLine& gcode_line);
|
||||||
GCodeCheckResult check_G2_G3_width(const GCodeLine& gcode_line);
|
GCodeCheckResult check_G2_G3_width(const GCodeLine& gcode_line);
|
||||||
|
void set_current_nozzle(int id);
|
||||||
|
|
||||||
double calculate_G1_width(const std::array<double, 3>& source,
|
double calculate_G1_width(const std::array<double, 3>& source,
|
||||||
const std::array<double, 3>& target,
|
const std::array<double, 3>& target,
|
||||||
@@ -214,12 +216,22 @@ private:
|
|||||||
bool check_gap_infill_width = false;
|
bool check_gap_infill_width = false;
|
||||||
int filament_id;
|
int filament_id;
|
||||||
double flow_ratio = 0;
|
double flow_ratio = 0;
|
||||||
|
|
||||||
double nozzle_temp = 0.0f;
|
double nozzle_temp = 0.0f;
|
||||||
|
std::array<double, 2> multi_nozzle_temp = { 0.0, 0.0 };
|
||||||
|
int current_nozzle_id = 0;
|
||||||
|
|
||||||
|
std::vector<double> filament_map;
|
||||||
|
|
||||||
|
std::map<int, int> physical_to_logic_extruder_map;
|
||||||
|
std::map<int, int> logic_to_physical_extruder_map;
|
||||||
std::vector<double> filament_flow_ratio;
|
std::vector<double> filament_flow_ratio;
|
||||||
std::vector<double> nozzle_temperature;
|
std::vector<double> nozzle_temperature;
|
||||||
std::vector<double> nozzle_temperature_initial_layer;
|
std::vector<double> nozzle_temperature_initial_layer;
|
||||||
|
|
||||||
bool has_scarf_joint_seam = false;
|
bool has_scarf_joint_seam = false;
|
||||||
bool is_wipe_tower = false;
|
bool is_wipe_tower = false;
|
||||||
|
bool is_multi_nozzle = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
src/libslic3r/PresetBundle.cpp
|
||||||
|
src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.h
|
||||||
|
src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp
|
||||||
|
src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.h
|
||||||
|
src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.cpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp
|
src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp
|
src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp
|
src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp
|
||||||
@@ -16,6 +21,10 @@ src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp
|
|||||||
src/slic3r/GUI/Gizmos/GLGizmoSeam.hpp
|
src/slic3r/GUI/Gizmos/GLGizmoSeam.hpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoText.cpp
|
src/slic3r/GUI/Gizmos/GLGizmoText.cpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoText.hpp
|
src/slic3r/GUI/Gizmos/GLGizmoText.hpp
|
||||||
|
src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp
|
||||||
|
src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp
|
||||||
|
src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp
|
||||||
|
src/slic3r/GUI/Gizmos/GLGizmoSVG.hpp
|
||||||
src/slic3r/GUI/GUI.cpp
|
src/slic3r/GUI/GUI.cpp
|
||||||
src/slic3r/GUI/GUI_App.cpp
|
src/slic3r/GUI/GUI_App.cpp
|
||||||
src/slic3r/GUI/GUI_AuxiliaryList.cpp
|
src/slic3r/GUI/GUI_AuxiliaryList.cpp
|
||||||
@@ -33,10 +42,14 @@ src/slic3r/GUI/HintNotification.cpp
|
|||||||
src/slic3r/GUI/IMSlider.cpp
|
src/slic3r/GUI/IMSlider.cpp
|
||||||
src/slic3r/GUI/Widgets/SideTools.cpp
|
src/slic3r/GUI/Widgets/SideTools.cpp
|
||||||
src/slic3r/GUI/Widgets/AMSControl.cpp
|
src/slic3r/GUI/Widgets/AMSControl.cpp
|
||||||
|
src/slic3r/GUI/Widgets/FanControl.cpp
|
||||||
|
src/slic3r/GUI/Widgets/FilamentLoad.cpp
|
||||||
|
src/slic3r/GUI/Widgets/TempInput.cpp
|
||||||
src/slic3r/GUI/ImGuiWrapper.cpp
|
src/slic3r/GUI/ImGuiWrapper.cpp
|
||||||
src/slic3r/GUI/Jobs/ArrangeJob.cpp
|
src/slic3r/GUI/Jobs/ArrangeJob.cpp
|
||||||
src/slic3r/GUI/Jobs/OrientJob.cpp
|
src/slic3r/GUI/Jobs/OrientJob.cpp
|
||||||
src/slic3r/GUI/Jobs/FillBedJob.cpp
|
src/slic3r/GUI/Jobs/FillBedJob.cpp
|
||||||
|
src/slic3r/GUI/Jobs/EmbossJob.cpp
|
||||||
src/slic3r/GUI/Jobs/Job.cpp
|
src/slic3r/GUI/Jobs/Job.cpp
|
||||||
src/slic3r/GUI/Jobs/PlaterJob.cpp
|
src/slic3r/GUI/Jobs/PlaterJob.cpp
|
||||||
src/slic3r/GUI/Jobs/RotoptimizeJob.cpp
|
src/slic3r/GUI/Jobs/RotoptimizeJob.cpp
|
||||||
@@ -70,9 +83,13 @@ src/slic3r/GUI/MainFrame.cpp
|
|||||||
src/slic3r/GUI/MediaPlayCtrl.cpp
|
src/slic3r/GUI/MediaPlayCtrl.cpp
|
||||||
src/slic3r/GUI/MediaFilePanel.cpp
|
src/slic3r/GUI/MediaFilePanel.cpp
|
||||||
src/slic3r/GUI/ImageGrid.cpp
|
src/slic3r/GUI/ImageGrid.cpp
|
||||||
|
src/slic3r/GUI/Widgets/ImageSwitchButton.cpp
|
||||||
src/slic3r/GUI/Printer/PrinterFileSystem.cpp
|
src/slic3r/GUI/Printer/PrinterFileSystem.cpp
|
||||||
src/slic3r/GUI/Mouse3DController.cpp
|
src/slic3r/GUI/Mouse3DController.cpp
|
||||||
|
src/slic3r/GUI/SelectMachinePop.cpp
|
||||||
src/slic3r/GUI/StatusPanel.cpp
|
src/slic3r/GUI/StatusPanel.cpp
|
||||||
|
src/slic3r/GUI/StepMeshDialog.cpp
|
||||||
|
src/slic3r/GUI/StepMeshDialog.hpp
|
||||||
src/slic3r/GUI/Monitor.cpp
|
src/slic3r/GUI/Monitor.cpp
|
||||||
src/slic3r/GUI/MsgDialog.cpp
|
src/slic3r/GUI/MsgDialog.cpp
|
||||||
src/slic3r/GUI/NotificationManager.hpp
|
src/slic3r/GUI/NotificationManager.hpp
|
||||||
@@ -106,6 +123,7 @@ src/slic3r/GUI/Auxiliary.cpp
|
|||||||
src/slic3r/GUI/UpdateDialogs.cpp
|
src/slic3r/GUI/UpdateDialogs.cpp
|
||||||
src/slic3r/GUI/UnsavedChangesDialog.cpp
|
src/slic3r/GUI/UnsavedChangesDialog.cpp
|
||||||
src/slic3r/GUI/ObjColorDialog.cpp
|
src/slic3r/GUI/ObjColorDialog.cpp
|
||||||
|
src/slic3r/GUI/SyncAmsInfoDialog.cpp
|
||||||
src/slic3r/GUI/WipeTowerDialog.cpp
|
src/slic3r/GUI/WipeTowerDialog.cpp
|
||||||
src/slic3r/GUI/wxExtensions.cpp
|
src/slic3r/GUI/wxExtensions.cpp
|
||||||
src/slic3r/GUI/WebUserLoginDialog.cpp
|
src/slic3r/GUI/WebUserLoginDialog.cpp
|
||||||
@@ -121,6 +139,7 @@ src/slic3r/Utils/Http.cpp
|
|||||||
src/slic3r/Utils/Process.cpp
|
src/slic3r/Utils/Process.cpp
|
||||||
src/slic3r/GUI/Jobs/PrintJob.cpp
|
src/slic3r/GUI/Jobs/PrintJob.cpp
|
||||||
src/libslic3r/GCode.cpp
|
src/libslic3r/GCode.cpp
|
||||||
|
src/libslic3r/GCode/ToolOrdering.cpp
|
||||||
src/libslic3r/ExtrusionEntity.cpp
|
src/libslic3r/ExtrusionEntity.cpp
|
||||||
src/libslic3r/Flow.cpp
|
src/libslic3r/Flow.cpp
|
||||||
src/libslic3r/Format/AMF.cpp
|
src/libslic3r/Format/AMF.cpp
|
||||||
@@ -140,7 +159,9 @@ src/slic3r/GUI/CalibrationWizardPage.cpp
|
|||||||
src/slic3r/GUI/CalibrationPanel.cpp
|
src/slic3r/GUI/CalibrationPanel.cpp
|
||||||
src/slic3r/GUI/CalibrationWizard.cpp
|
src/slic3r/GUI/CalibrationWizard.cpp
|
||||||
src/slic3r/GUI/CalibrationWizardStartPage.cpp
|
src/slic3r/GUI/CalibrationWizardStartPage.cpp
|
||||||
|
src/slic3r/GUI/CalibrationWizardSavePage.cpp
|
||||||
src/slic3r/GUI/CalibrationWizardPresetPage.cpp
|
src/slic3r/GUI/CalibrationWizardPresetPage.cpp
|
||||||
|
src/slic3r/GUI/CalibrationWizardCaliPage.cpp
|
||||||
src/slic3r/GUI/CaliHistoryDialog.cpp
|
src/slic3r/GUI/CaliHistoryDialog.cpp
|
||||||
src/slic3r/GUI/calib_dlg.cpp
|
src/slic3r/GUI/calib_dlg.cpp
|
||||||
src/slic3r/GUI/BonjourDialog.cpp
|
src/slic3r/GUI/BonjourDialog.cpp
|
||||||
@@ -163,4 +184,7 @@ src/slic3r/GUI/SendMultiMachinePage.cpp
|
|||||||
src/slic3r/GUI/MultiMachinePage.cpp
|
src/slic3r/GUI/MultiMachinePage.cpp
|
||||||
src/slic3r/GUI/MultiMachineManagerPage.cpp
|
src/slic3r/GUI/MultiMachineManagerPage.cpp
|
||||||
src/slic3r/GUI/MultiTaskManagerPage.cpp
|
src/slic3r/GUI/MultiTaskManagerPage.cpp
|
||||||
src/slic3r/GUI/MultiMachine.cpp
|
src/slic3r/GUI/MultiMachine.cpp
|
||||||
|
src/slic3r/GUI/FilamentMapDialog.cpp
|
||||||
|
src/slic3r/GUI/FilamentGroupPopup.cpp
|
||||||
|
src/slic3r/GUI/FilamentMapPanel.cpp
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 560 KiB After Width: | Height: | Size: 502 KiB |
94
resources/flush/flush_data_dual_highflow.txt
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
colors
|
||||||
|
#000000 #FFFFFF #545454 #8E9089 #C12E1F #F4EE2A #0A2989 #FF6A13 #0086D6 #F7E6DE #00AE42
|
||||||
|
src dst flush
|
||||||
|
#000000 #FFFFFF 900
|
||||||
|
#000000 #545454 330
|
||||||
|
#000000 #8E9089 570
|
||||||
|
#000000 #C12E1F 660
|
||||||
|
#000000 #F4EE2A 900
|
||||||
|
#000000 #0A2989 480
|
||||||
|
#000000 #FF6A13 900
|
||||||
|
#000000 #0086D6 630
|
||||||
|
#000000 #F7E6DE 900
|
||||||
|
#000000 #00AE42 660
|
||||||
|
#FFFFFF #000000 90
|
||||||
|
#FFFFFF #545454 120
|
||||||
|
#FFFFFF #F4EE2A 120
|
||||||
|
#FFFFFF #0A2989 150
|
||||||
|
#FFFFFF #FF6A13 120
|
||||||
|
#FFFFFF #00AE42 120
|
||||||
|
#545454 #000000 90
|
||||||
|
#545454 #FFFFFF 780
|
||||||
|
#545454 #8E9089 210
|
||||||
|
#545454 #C12E1F 270
|
||||||
|
#545454 #F4EE2A 390
|
||||||
|
#545454 #0A2989 120
|
||||||
|
#545454 #FF6A13 360
|
||||||
|
#545454 #0086D6 300
|
||||||
|
#545454 #F7E6DE 780
|
||||||
|
#545454 #00AE42 330
|
||||||
|
#8E9089 #000000 210
|
||||||
|
#8E9089 #FFFFFF 450
|
||||||
|
#8E9089 #545454 180
|
||||||
|
#8E9089 #F4EE2A 360
|
||||||
|
#8E9089 #0A2989 210
|
||||||
|
#8E9089 #FF6A13 300
|
||||||
|
#8E9089 #F7E6DE 450
|
||||||
|
#8E9089 #00AE42 210
|
||||||
|
#C12E1F #000000 120
|
||||||
|
#C12E1F #FFFFFF 720
|
||||||
|
#C12E1F #545454 270
|
||||||
|
#C12E1F #8E9089 480
|
||||||
|
#C12E1F #F4EE2A 540
|
||||||
|
#C12E1F #0A2989 300
|
||||||
|
#C12E1F #FF6A13 330
|
||||||
|
#C12E1F #F7E6DE 690
|
||||||
|
#C12E1F #00AE42 600
|
||||||
|
#F4EE2A #000000 150
|
||||||
|
#F4EE2A #FFFFFF 870
|
||||||
|
#F4EE2A #545454 330
|
||||||
|
#F4EE2A #0A2989 330
|
||||||
|
#F4EE2A #FF6A13 150
|
||||||
|
#F4EE2A #0086D6 420
|
||||||
|
#F4EE2A #F7E6DE 870
|
||||||
|
#0A2989 #000000 90
|
||||||
|
#0A2989 #FFFFFF 630
|
||||||
|
#0A2989 #545454 150
|
||||||
|
#0A2989 #8E9089 390
|
||||||
|
#0A2989 #C12E1F 450
|
||||||
|
#0A2989 #F4EE2A 510
|
||||||
|
#0A2989 #FF6A13 480
|
||||||
|
#0A2989 #0086D6 300
|
||||||
|
#0A2989 #F7E6DE 630
|
||||||
|
#0A2989 #00AE42 660
|
||||||
|
#FF6A13 #000000 90
|
||||||
|
#FF6A13 #FFFFFF 570
|
||||||
|
#FF6A13 #545454 180
|
||||||
|
#FF6A13 #F4EE2A 390
|
||||||
|
#FF6A13 #0A2989 270
|
||||||
|
#FF6A13 #0086D6 360
|
||||||
|
#FF6A13 #F7E6DE 330
|
||||||
|
#FF6A13 #00AE42 300
|
||||||
|
#0086D6 #000000 120
|
||||||
|
#0086D6 #FFFFFF 600
|
||||||
|
#0086D6 #545454 150
|
||||||
|
#0086D6 #8E9089 390
|
||||||
|
#0086D6 #C12E1F 420
|
||||||
|
#0086D6 #F4EE2A 480
|
||||||
|
#0086D6 #0A2989 120
|
||||||
|
#0086D6 #FF6A13 330
|
||||||
|
#0086D6 #F7E6DE 450
|
||||||
|
#0086D6 #00AE42 180
|
||||||
|
#F7E6DE #000000 90
|
||||||
|
#F7E6DE #545454 120
|
||||||
|
#F7E6DE #F4EE2A 120
|
||||||
|
#F7E6DE #0A2989 150
|
||||||
|
#F7E6DE #FF6A13 120
|
||||||
|
#F7E6DE #00AE42 120
|
||||||
|
#00AE42 #000000 90
|
||||||
|
#00AE42 #FFFFFF 630
|
||||||
|
#00AE42 #545454 210
|
||||||
|
#00AE42 #F4EE2A 360
|
||||||
|
#00AE42 #0A2989 210
|
||||||
|
#00AE42 #0086D6 360
|
||||||
|
#00AE42 #F7E6DE 630
|
||||||
99
resources/flush/flush_data_dual_standard.txt
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
colors
|
||||||
|
#000000 #FFFFFF #545454 #8E9089 #C12E1F #F4EE2A #0A2989 #FF6A13 #0086D6 #F7E6DE #00AE42
|
||||||
|
src dst flush
|
||||||
|
#000000 #FFFFFF 900
|
||||||
|
#000000 #545454 270
|
||||||
|
#000000 #8E9089 510
|
||||||
|
#000000 #C12E1F 900
|
||||||
|
#000000 #F4EE2A 900
|
||||||
|
#000000 #0A2989 360
|
||||||
|
#000000 #FF6A13 900
|
||||||
|
#000000 #0086D6 630
|
||||||
|
#000000 #F7E6DE 900
|
||||||
|
#000000 #00AE42 780
|
||||||
|
#FFFFFF #000000 90
|
||||||
|
#FFFFFF #545454 90
|
||||||
|
#FFFFFF #8E9089 180
|
||||||
|
#FFFFFF #F4EE2A 150
|
||||||
|
#FFFFFF #0A2989 60
|
||||||
|
#FFFFFF #FF6A13 150
|
||||||
|
#FFFFFF #00AE42 150
|
||||||
|
#545454 #000000 90
|
||||||
|
#545454 #8E9089 240
|
||||||
|
#545454 #C12E1F 360
|
||||||
|
#545454 #F4EE2A 390
|
||||||
|
#545454 #0A2989 180
|
||||||
|
#545454 #FF6A13 300
|
||||||
|
#545454 #0086D6 270
|
||||||
|
#545454 #F7E6DE 330
|
||||||
|
#545454 #00AE42 390
|
||||||
|
#8E9089 #000000 210
|
||||||
|
#8E9089 #FFFFFF 390
|
||||||
|
#8E9089 #545454 150
|
||||||
|
#8E9089 #F4EE2A 330
|
||||||
|
#8E9089 #0A2989 330
|
||||||
|
#8E9089 #F7E6DE 390
|
||||||
|
#8E9089 #00AE42 240
|
||||||
|
#C12E1F #000000 90
|
||||||
|
#C12E1F #FFFFFF 780
|
||||||
|
#C12E1F #545454 360
|
||||||
|
#C12E1F #8E9089 510
|
||||||
|
#C12E1F #F4EE2A 600
|
||||||
|
#C12E1F #0A2989 420
|
||||||
|
#C12E1F #FF6A13 390
|
||||||
|
#C12E1F #0086D6 450
|
||||||
|
#C12E1F #F7E6DE 600
|
||||||
|
#C12E1F #00AE42 510
|
||||||
|
#F4EE2A #000000 90
|
||||||
|
#F4EE2A #FFFFFF 690
|
||||||
|
#F4EE2A #545454 390
|
||||||
|
#F4EE2A #8E9089 480
|
||||||
|
#F4EE2A #0A2989 390
|
||||||
|
#F4EE2A #FF6A13 180
|
||||||
|
#F4EE2A #0086D6 450
|
||||||
|
#F4EE2A #F7E6DE 690
|
||||||
|
#0A2989 #000000 90
|
||||||
|
#0A2989 #FFFFFF 630
|
||||||
|
#0A2989 #545454 300
|
||||||
|
#0A2989 #8E9089 450
|
||||||
|
#0A2989 #C12E1F 450
|
||||||
|
#0A2989 #F4EE2A 510
|
||||||
|
#0A2989 #FF6A13 420
|
||||||
|
#0A2989 #0086D6 330
|
||||||
|
#0A2989 #F7E6DE 630
|
||||||
|
#0A2989 #00AE42 390
|
||||||
|
#FF6A13 #000000 90
|
||||||
|
#FF6A13 #FFFFFF 420
|
||||||
|
#FF6A13 #545454 90
|
||||||
|
#FF6A13 #8E9089 360
|
||||||
|
#FF6A13 #C12E1F 180
|
||||||
|
#FF6A13 #F4EE2A 180
|
||||||
|
#FF6A13 #0A2989 210
|
||||||
|
#FF6A13 #0086D6 360
|
||||||
|
#FF6A13 #F7E6DE 420
|
||||||
|
#FF6A13 #00AE42 240
|
||||||
|
#0086D6 #000000 90
|
||||||
|
#0086D6 #FFFFFF 510
|
||||||
|
#0086D6 #545454 150
|
||||||
|
#0086D6 #8E9089 420
|
||||||
|
#0086D6 #C12E1F 420
|
||||||
|
#0086D6 #F4EE2A 420
|
||||||
|
#0086D6 #0A2989 120
|
||||||
|
#0086D6 #FF6A13 390
|
||||||
|
#0086D6 #F7E6DE 510
|
||||||
|
#0086D6 #00AE42 300
|
||||||
|
#F7E6DE #000000 90
|
||||||
|
#F7E6DE #545454 90
|
||||||
|
#F7E6DE #8E9089 180
|
||||||
|
#F7E6DE #F4EE2A 150
|
||||||
|
#F7E6DE #0A2989 60
|
||||||
|
#F7E6DE #FF6A13 150
|
||||||
|
#F7E6DE #00AE42 150
|
||||||
|
#00AE42 #FFFFFF 570
|
||||||
|
#00AE42 #545454 270
|
||||||
|
#00AE42 #8E9089 480
|
||||||
|
#00AE42 #F4EE2A 450
|
||||||
|
#00AE42 #0A2989 270
|
||||||
|
#00AE42 #FF6A13 300
|
||||||
|
#00AE42 #0086D6 390
|
||||||
|
#00AE42 #F7E6DE 570
|
||||||
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 |
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 |
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 |
@@ -1,3 +1,3 @@
|
|||||||
<svg width="26" height="11" viewBox="0 0 26 11" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="26" height="11" viewBox="0 0 26 11" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M25.0877 5.97153C25.3595 5.69978 25.3595 5.2592 25.0877 4.98746L20.6594 0.55913C20.3877 0.287386 19.9471 0.287386 19.6753 0.55913C19.4036 0.830875 19.4036 1.27146 19.6753 1.5432L23.6116 5.47949L19.6753 9.41578C19.4036 9.68753 19.4036 10.1281 19.6753 10.3999C19.9471 10.6716 20.3877 10.6716 20.6594 10.3999L25.0877 5.97153ZM0.90332 6.17534H24.5957V4.78365H0.90332V6.17534Z" fill="#00AE42"/>
|
<path d="M25.0877 5.97153C25.3595 5.69978 25.3595 5.2592 25.0877 4.98746L20.6594 0.55913C20.3877 0.287386 19.9471 0.287386 19.6753 0.55913C19.4036 0.830875 19.4036 1.27146 19.6753 1.5432L23.6116 5.47949L19.6753 9.41578C19.4036 9.68753 19.4036 10.1281 19.6753 10.3999C19.9471 10.6716 20.3877 10.6716 20.6594 10.3999L25.0877 5.97153ZM0.90332 6.17534H24.5957V4.78365H0.90332V6.17534Z" fill="#4479fb"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 502 B After Width: | Height: | Size: 502 B |
@@ -1,4 +0,0 @@
|
|||||||
<svg width="13" height="15" viewBox="0 0 13 15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.06444 9.28005L1.07547 11.3918L3.21526 11.4027L1.06444 9.28005ZM1.07569 9.28988L3.20445 11.3907L12.6065 2.11192L10.4777 0.011054L1.07569 9.28988Z" fill="white"/>
|
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.05957 13.4785C1.05957 12.9262 1.50729 12.4785 2.05957 12.4785H12C12.5523 12.4785 13 12.9262 13 13.4785C13 14.0308 12.5523 14.4785 12 14.4785H2.05957C1.50729 14.4785 1.05957 14.0308 1.05957 13.4785Z" fill="white"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 582 B |
@@ -1,6 +1,21 @@
|
|||||||
<svg width="54" height="33" viewBox="0 0 54 33" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<rect width="50" height="30" rx="4.63896" fill="#EA4E38"/>
|
<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
<path d="M0 19H50V25.361C50 27.9231 47.9231 30 45.361 30H4.63896C2.07693 30 0 27.9231 0 25.361V19Z" fill="#C041C2"/>
|
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
<path d="M16.0526 4.96415C16.6934 4.96415 17.2649 5.08971 17.7672 5.34084C18.2781 5.59196 18.6764 5.94266 18.9622 6.39295C19.2479 6.83458 19.3908 7.34116 19.3908 7.91268C19.3908 8.4842 19.2479 8.9951 18.9622 9.44539C18.6851 9.88702 18.2911 10.2334 17.7801 10.4845C17.2779 10.727 16.7021 10.8482 16.0526 10.8482H14.2861V14.4722H13.1301V4.96415H16.0526ZM15.9097 9.83506C16.6371 9.83506 17.1956 9.65754 17.5853 9.30251C17.975 8.93881 18.1698 8.47554 18.1698 7.91268C18.1698 7.34982 17.975 6.88654 17.5853 6.52284C17.1956 6.15915 16.6371 5.9773 15.9097 5.9773H14.2861V9.83506H15.9097ZM20.8423 4.96415H21.9984V13.433H26.6874V14.4722H20.8423V4.96415ZM31.7844 4.96415L35.6032 14.4722H34.3173L33.2652 11.7445H29.3295L28.3293 14.4722H27.1603L30.8102 4.96415H31.7844ZM32.8625 10.7053L31.2519 6.50985L29.7192 10.7053H32.8625Z" fill="white"/>
|
viewBox="0 0 54 33" style="enable-background:new 0 0 54 33;" xml:space="preserve">
|
||||||
<path d="M21.3664 20.7625L24.0941 27.554H23.0086L22.3128 25.7355H19.5572L18.8892 27.554H17.8872L20.5129 20.7625H21.3664ZM21.9788 24.8634L20.9025 22.0614L19.882 24.8634H21.9788ZM25.0369 22.9057V21.913L27.0502 20.7532H27.8203V27.554H26.809V21.9037L25.0369 22.9057Z" fill="white"/>
|
<style type="text/css">
|
||||||
|
.st0{fill:#EA4E38;}
|
||||||
|
.st1{fill:#C041C2;}
|
||||||
|
.st2{fill:#FFFFFF;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M4.6,0h40.7C47.9,0,50,2.1,50,4.6v20.7c0,2.6-2.1,4.6-4.6,4.6H4.6C2.1,30,0,27.9,0,25.4V4.6C0,2.1,2.1,0,4.6,0z
|
||||||
|
"/>
|
||||||
|
<path class="st1" d="M0,19h50v6.4c0,2.6-2.1,4.6-4.6,4.6H4.6C2.1,30,0,27.9,0,25.4V19z"/>
|
||||||
|
<path class="st2" d="M16.1,5c0.6,0,1.2,0.1,1.7,0.4c0.5,0.3,0.9,0.6,1.2,1.1c0.3,0.4,0.4,0.9,0.4,1.5c0,0.6-0.1,1.1-0.4,1.5
|
||||||
|
c-0.3,0.4-0.7,0.8-1.2,1c-0.5,0.2-1.1,0.4-1.7,0.4h-1.8v3.6h-1.2V5H16.1z M15.9,9.8c0.7,0,1.3-0.2,1.7-0.5c0.4-0.4,0.6-0.8,0.6-1.4
|
||||||
|
s-0.2-1-0.6-1.4C17.2,6.2,16.6,6,15.9,6h-1.6v3.9H15.9z M20.8,5H22v8.5h4.7v1h-5.8V5z M31.8,5l3.8,9.5h-1.3l-1.1-2.7h-3.9l-1,2.7
|
||||||
|
h-1.2L30.8,5H31.8z M32.9,10.7l-1.6-4.2l-1.5,4.2H32.9z"/>
|
||||||
|
<g>
|
||||||
|
<path class="st2" d="M18.7,22.9v-1l2-1.2h0.8v6.8h-1v-5.7L18.7,22.9z"/>
|
||||||
|
<path class="st2" d="M26.8,20.8l2.7,6.8h-1.1l-0.7-1.8h-2.8l-0.7,1.8h-1l2.6-6.8H26.8z M27.4,24.9L26.3,22l-1,2.8H27.4z"/>
|
||||||
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.3 KiB |
@@ -1,6 +0,0 @@
|
|||||||
<svg width="54" height="33" viewBox="0 0 54 33" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<rect width="50" height="30" rx="4.63896" fill="#EA4E38"/>
|
|
||||||
<path d="M0 19H50V25.361C50 27.9231 47.9231 30 45.361 30H4.63896C2.07693 30 0 27.9231 0 25.361V19Z" fill="#C041C2"/>
|
|
||||||
<path d="M16.0526 4.96415C16.6934 4.96415 17.2649 5.08971 17.7672 5.34084C18.2781 5.59196 18.6764 5.94266 18.9622 6.39295C19.2479 6.83458 19.3908 7.34116 19.3908 7.91268C19.3908 8.4842 19.2479 8.9951 18.9622 9.44539C18.6851 9.88702 18.2911 10.2334 17.7801 10.4845C17.2779 10.727 16.7021 10.8482 16.0526 10.8482H14.2861V14.4722H13.1301V4.96415H16.0526ZM15.9097 9.83506C16.6371 9.83506 17.1956 9.65754 17.5853 9.30251C17.975 8.93881 18.1698 8.47554 18.1698 7.91268C18.1698 7.34982 17.975 6.88654 17.5853 6.52284C17.1956 6.15915 16.6371 5.9773 15.9097 5.9773H14.2861V9.83506H15.9097ZM20.8423 4.96415H21.9984V13.433H26.6874V14.4722H20.8423V4.96415ZM31.7844 4.96415L35.6032 14.4722H34.3173L33.2652 11.7445H29.3295L28.3293 14.4722H27.1603L30.8102 4.96415H31.7844ZM32.8625 10.7053L31.2519 6.50985L29.7192 10.7053H32.8625Z" fill="white"/>
|
|
||||||
<path d="M21.3664 20.7625L24.0941 27.554H23.0086L22.3128 25.7355H19.5572L18.8892 27.554H17.8872L20.5129 20.7625H21.3664ZM21.9788 24.8634L20.9025 22.0614L19.882 24.8634H21.9788ZM25.0369 22.9057V21.913L27.0502 20.7532H27.8203V27.554H26.809V21.9037L25.0369 22.9057Z" fill="white"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.4 KiB |
20
resources/images/ams_mapping_container_1.svg
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<svg width="74" height="82" viewBox="0 0 74 82" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_21731_45418)">
|
||||||
|
<mask id="mask0_21731_45418" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="4" width="74" height="78">
|
||||||
|
<path d="M74 4H0V82H74V4Z" fill="white"/>
|
||||||
|
</mask>
|
||||||
|
<g mask="url(#mask0_21731_45418)">
|
||||||
|
</g>
|
||||||
|
<mask id="mask1_21731_45418" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="74" height="82">
|
||||||
|
<path d="M74 0H0V82H74V0Z" fill="white"/>
|
||||||
|
</mask>
|
||||||
|
<g mask="url(#mask1_21731_45418)">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.8 0.152344C1.3 0.152344 0 1.25439 0 2.55681V79.7479C0 81.0503 1.3 82.1523 2.8 82.1523H71.2C72.7 82.1523 74 81.0503 74 79.7479L74 2.55681C74 1.25439 72.7 0.152344 71.2 0.152344H2.8ZM4.2 1.35458C2.7 1.35458 1.4 2.45662 1.4 3.75904L1.4 62.9173C1.4 64.2197 2.7 65.3216 4.2 65.3216H69.8C71.3 65.3216 72.6 64.2197 72.6 62.9173L72.6 3.75904C72.6 2.45662 71.3 1.35458 69.8 1.35458H4.2Z" fill="#AAAAAA"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_21731_45418">
|
||||||
|
<rect width="74" height="82" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
3
resources/images/ams_mapping_container_4.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg width="230" height="82" viewBox="0 0 230 82" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.80488 0C1.25579 0 0 1.07452 0 2.4V79.6C0 80.9254 1.25579 82 2.80488 82H227.195C228.744 82 230 80.9254 230 79.6V2.4C230 1.07452 228.744 0 227.195 0H2.80488ZM4.20732 1.2C2.65822 1.2 1.40244 2.27452 1.40244 3.6V62.8C1.40244 64.1254 2.65822 65.2 4.20732 65.2H225.793C227.342 65.2 228.598 64.1254 228.598 62.8V3.6C228.598 2.27452 227.342 1.2 225.793 1.2H4.20732Z" fill="#AAAAAA"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 533 B |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 8.8 KiB |
10
resources/images/ams_wheel_narrow.svg
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<svg width="22" height="24" viewBox="0 0 22 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<ellipse cx="5.47109" cy="12.0235" rx="3.0248" ry="10.2364" fill="white" stroke="#6B6B6B"/>
|
||||||
|
<ellipse cx="5.0057" cy="12.0237" rx="0.465353" ry="1.53546" fill="#6B6B6B"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.7616 22.2599C18.4321 22.2599 19.7864 17.6769 19.7864 12.0235C19.7864 6.37009 18.4321 1.78711 16.7616 1.78711C16.1333 1.78711 15.5497 2.43539 15.0661 3.54508C15.0646 3.54866 15.0672 3.55273 15.0711 3.55273V3.55273C15.0719 3.55273 15.0719 3.55249 15.0726 3.55288C15.0968 3.56542 16.7076 4.43067 16.7076 11.9968C16.7076 19.5659 15.0955 20.4833 15.0726 20.496C15.0719 20.4964 15.0719 20.4961 15.0711 20.4961V20.4961C15.0676 20.4961 15.0652 20.4998 15.0666 20.5031C15.5501 21.612 16.1335 22.2599 16.7616 22.2599Z" fill="white"/>
|
||||||
|
<path d="M15.0666 20.5031L15.525 20.3032L15.0666 20.5031ZM15.0726 20.496L14.8308 20.0583L15.0726 20.496ZM15.0726 3.55288L15.3032 3.10918L15.0726 3.55288ZM15.0661 3.54508L14.6078 3.34533L15.0661 3.54508ZM19.2864 12.0235C19.2864 14.8161 18.9513 17.3252 18.4209 19.12C18.1548 20.0207 17.8477 20.7131 17.5291 21.1691C17.2005 21.6394 16.9333 21.7599 16.7616 21.7599V22.7599C17.4251 22.7599 17.9537 22.3075 18.3489 21.7418C18.754 21.1618 19.0987 20.3552 19.3799 19.4034C19.9444 17.4933 20.2864 14.8843 20.2864 12.0235H19.2864ZM16.7616 2.28711C16.9333 2.28711 17.2005 2.40759 17.5291 2.87789C17.8477 3.33389 18.1548 4.02633 18.4209 4.92697C18.9513 6.72174 19.2864 9.23088 19.2864 12.0235H20.2864C20.2864 9.16271 19.9444 6.55366 19.3799 4.64359C19.0987 3.69181 18.754 2.88515 18.3489 2.30518C17.9537 1.73951 17.4251 1.28711 16.7616 1.28711V2.28711ZM15.5245 3.74483C15.7538 3.21857 15.9927 2.83658 16.2226 2.59379C16.4521 2.35152 16.6327 2.28711 16.7616 2.28711V1.28711C16.2622 1.28711 15.8369 1.54683 15.4966 1.90614C15.1568 2.26491 14.862 2.76189 14.6078 3.34533L15.5245 3.74483ZM14.8421 3.99657C14.7064 3.92606 15.0484 4.02093 15.4271 5.10686C15.8071 6.19689 16.2076 8.2426 16.2076 11.9968H17.2076C17.2076 8.18488 16.8027 6.0149 16.3713 4.77763C15.9385 3.53626 15.463 3.19224 15.3032 3.10918L14.8421 3.99657ZM16.2076 11.9968C16.2076 15.7521 15.8069 17.8125 15.426 18.917C15.0464 20.0178 14.7015 20.1298 14.8308 20.0583L15.3144 20.9336C15.4667 20.8495 15.9392 20.4964 16.3714 19.243C16.8023 17.9934 17.2076 15.8106 17.2076 11.9968H16.2076ZM16.7616 21.7599C16.6327 21.7599 16.4522 21.6955 16.2228 21.4534C15.993 21.2108 15.7543 20.8291 15.525 20.3032L14.6083 20.7029C14.8625 21.286 15.1572 21.7827 15.4969 22.1412C15.8372 22.5003 16.2624 22.7599 16.7616 22.7599V21.7599ZM15.0711 19.9961C14.6964 19.9961 14.4673 20.3794 14.6083 20.7029L15.525 20.3032C15.6632 20.6202 15.4388 20.9961 15.0711 20.9961V19.9961ZM14.8308 20.0583C14.8454 20.0502 14.883 20.0301 14.9352 20.0153C14.9634 20.0072 14.9947 20.001 15.0286 19.9981C15.0623 19.9951 15.0915 19.996 15.1142 19.998C15.1346 19.9997 15.1505 20.0024 15.1529 20.0028C15.1599 20.0039 15.1501 20.0023 15.1449 20.0015C15.1252 19.9986 15.1002 19.9961 15.0711 19.9961V20.9961C15.0425 20.9961 15.0178 20.9936 14.9983 20.9907C14.9932 20.99 14.9835 20.9884 14.9907 20.9895C14.9931 20.9899 15.0091 20.9926 15.0296 20.9944C15.0524 20.9963 15.0817 20.9972 15.1155 20.9943C15.1494 20.9913 15.1808 20.9851 15.2092 20.977C15.2616 20.9621 15.2994 20.9419 15.3144 20.9336L14.8308 20.0583ZM15.0711 4.05273C15.098 4.05273 15.121 4.05057 15.1387 4.04818C15.1422 4.0477 15.1528 4.04613 15.1447 4.04733C15.1418 4.04775 15.1267 4.05003 15.1072 4.05141C15.0857 4.05293 15.0584 4.05346 15.0271 4.05064C14.9958 4.04782 14.9669 4.04223 14.9406 4.03505C14.8919 4.02177 14.8564 4.004 14.8421 3.99657L15.3032 3.10918C15.2885 3.10156 15.2527 3.08367 15.2038 3.07033C15.1443 3.05408 15.0873 3.05032 15.0366 3.0539C15.017 3.05529 15.0018 3.05759 14.9988 3.05803C14.9906 3.05924 15.0011 3.05768 15.0045 3.05722C15.0219 3.05487 15.0445 3.05273 15.0711 3.05273V4.05273ZM14.6078 3.34533C14.4666 3.66925 14.6961 4.05273 15.0711 4.05273V3.05273C15.4382 3.05273 15.6625 3.42807 15.5245 3.74483L14.6078 3.34533Z" fill="#6B6B6B"/>
|
||||||
|
<mask id="path-5-inside-1_16464_31236" fill="white">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.74371 20.4941C7.5445 18.6526 8.07053 15.545 8.07053 12.0215C8.07053 8.49929 7.54485 5.39254 6.74451 3.55078H15.5872C15.5872 3.55078 17.2225 4.37156 17.2225 11.9949C17.2225 19.6182 15.5872 20.4941 15.5872 20.4941H6.74371Z"/>
|
||||||
|
</mask>
|
||||||
|
<path d="M6.74371 20.4941L5.82667 20.0954L5.21841 21.4941H6.74371V20.4941ZM6.74451 3.55078V2.55078H5.21963L5.82737 3.94933L6.74451 3.55078ZM15.5872 3.55078L16.0358 2.65705L15.8241 2.55078H15.5872V3.55078ZM15.5872 20.4941V21.4941H15.8382L16.0594 21.3756L15.5872 20.4941ZM7.07053 12.0215C7.07053 15.478 6.55034 18.4312 5.82667 20.0954L7.66076 20.8929C8.53866 18.8741 9.07053 15.6119 9.07053 12.0215H7.07053ZM5.82737 3.94933C6.5507 5.61389 7.07053 8.56625 7.07053 12.0215H9.07053C9.07053 8.43233 8.539 5.1712 7.66166 3.15223L5.82737 3.94933ZM6.74451 4.55078H15.5872V2.55078H6.74451V4.55078ZM15.5872 3.55078C15.1387 4.44452 15.137 4.4437 15.1354 4.44289C15.1349 4.44262 15.1333 4.44181 15.1322 4.44127C15.1301 4.44019 15.128 4.43912 15.126 4.43805C15.1219 4.43591 15.1179 4.4338 15.114 4.4317C15.1062 4.42752 15.0989 4.42344 15.0921 4.41948C15.0784 4.41156 15.0665 4.40416 15.0563 4.3975C15.036 4.38413 15.023 4.3739 15.0166 4.36856C15.0036 4.35771 15.0189 4.36792 15.055 4.41411C15.1281 4.50758 15.2855 4.74711 15.4619 5.24695C15.8181 6.25602 16.2225 8.2411 16.2225 11.9949H18.2225C18.2225 8.12531 17.8093 5.88836 17.3478 4.58121C17.1155 3.92295 16.864 3.48083 16.6305 3.18217C16.5133 3.03231 16.4008 2.91883 16.2984 2.83332C16.2473 2.79064 16.1992 2.75534 16.1549 2.72622C16.1328 2.71169 16.1117 2.69875 16.0918 2.68726C16.0818 2.68151 16.0722 2.67614 16.0628 2.67111C16.0582 2.66859 16.0536 2.66616 16.0491 2.66382C16.0468 2.66265 16.0446 2.6615 16.0424 2.66037C16.0413 2.65981 16.0397 2.65897 16.0391 2.65869C16.0375 2.65787 16.0358 2.65705 15.5872 3.55078ZM16.2225 11.9949C16.2225 15.7478 15.8183 17.7487 15.4607 18.7739C15.2834 19.282 15.1242 19.5312 15.0473 19.6322C15.0092 19.6821 14.9916 19.6955 15.0017 19.6867C15.0067 19.6823 15.0182 19.6728 15.0371 19.6598C15.0465 19.6533 15.0576 19.646 15.0706 19.638C15.0771 19.6341 15.0841 19.6299 15.0915 19.6257C15.0952 19.6236 15.099 19.6214 15.1029 19.6193C15.1049 19.6182 15.1069 19.6171 15.1089 19.616C15.1099 19.6154 15.1114 19.6146 15.1119 19.6143C15.1135 19.6135 15.115 19.6127 15.5872 20.4941C16.0594 21.3756 16.061 21.3748 16.0626 21.3739C16.0631 21.3737 16.0647 21.3728 16.0657 21.3722C16.0679 21.3711 16.07 21.3699 16.0722 21.3687C16.0765 21.3663 16.0809 21.3638 16.0854 21.3612C16.0944 21.3561 16.1037 21.3506 16.1132 21.3448C16.1324 21.333 16.1528 21.3199 16.1741 21.3051C16.2169 21.2755 16.2636 21.2397 16.3133 21.1965C16.4129 21.11 16.523 20.9954 16.6382 20.8441C16.8679 20.5426 17.1175 20.0964 17.3491 19.4326C17.8091 18.114 18.2225 15.8652 18.2225 11.9949H16.2225ZM15.5872 19.4941H6.74371V21.4941H15.5872V19.4941Z" fill="#6B6B6B" mask="url(#path-5-inside-1_16464_31236)"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 6.9 KiB |
4
resources/images/badge.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M0 0H14C16.2091 0 18 1.79086 18 4V18L8.2784 8.45085L0 0Z" fill="#4479fb"/>
|
||||||
|
<path d="M16.3579 3.1416C16.5467 3.3304 16.5467 3.63568 16.3579 3.82247L11.0555 9.12687C10.8667 9.31567 10.5614 9.31567 10.3747 9.12687L7.64111 6.39534C7.45231 6.20654 7.45231 5.90125 7.64111 5.71446C7.82991 5.52767 8.1352 5.52566 8.32198 5.71446L10.7121 8.10455L15.675 3.1416C15.8638 2.9528 16.1691 2.9528 16.3559 3.1416H16.3579Z" fill="white"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 534 B |
BIN
resources/images/bed_cool.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
resources/images/bed_cool_Q1 Pro.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
resources/images/bed_cool_X-Max 3.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
resources/images/bed_cool_X-Plus 3.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
resources/images/bed_cool_X-Plus 4.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
resources/images/bed_cool_X-Smart 3.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
resources/images/bed_cool_supertack.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
resources/images/bed_cool_supertack_Q1 Pro.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
resources/images/bed_cool_supertack_X-Max 3.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
resources/images/bed_cool_supertack_X-Plus 3.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
resources/images/bed_cool_supertack_X-Smart 3.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
resources/images/bed_cool_supertack__X-Plus 4.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
resources/images/bed_engineering.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
resources/images/bed_engineering_Q1 Pro.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
resources/images/bed_engineering_X-Max 3.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
resources/images/bed_engineering_X-Plus 3.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
resources/images/bed_engineering_X-Plus 4.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
resources/images/bed_engineering_X-Smart 3.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
resources/images/bed_high_templ.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
resources/images/bed_high_templ_Q1 Pro.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
resources/images/bed_high_templ_X-Max 3.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
resources/images/bed_high_templ_X-Plus 3.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
resources/images/bed_high_templ_X-Plus 4.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
resources/images/bed_high_templ_X-Smart 3.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
resources/images/bed_pei.png
Normal file
|
After Width: | Height: | Size: 18 KiB |