Compare commits
73 Commits
Version-1.
...
v2.02.00.6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
72a3a1e841 | ||
|
|
87acaa14f7 | ||
|
|
dab82d0248 | ||
|
|
15dd71693d | ||
|
|
2fa18f50c6 | ||
|
|
38c3592758 | ||
|
|
8a68adb427 | ||
|
|
661b112a68 | ||
|
|
8d4d60ec48 | ||
|
|
e3f49c2fb5 | ||
|
|
5effa59bd0 | ||
|
|
8ed41b9f06 | ||
|
|
fc0a06deaa | ||
|
|
a253e093f8 | ||
|
|
64806161f0 | ||
|
|
4dadec668b | ||
|
|
eb7e027385 | ||
|
|
7f04d94ea1 | ||
|
|
f60592f1a0 | ||
|
|
e0d447172c | ||
|
|
bafe693d0a | ||
|
|
c56a6849eb | ||
|
|
e8c9baa840 | ||
|
|
688396a0a0 | ||
|
|
8c9640a666 | ||
|
|
37aa092244 | ||
|
|
60d6348a42 | ||
|
|
6d0ec79031 | ||
|
|
b68290818e | ||
|
|
031525a16e | ||
|
|
5ac6bf0ccb | ||
|
|
958f8339bc | ||
|
|
9b0892b7c2 | ||
|
|
ef9e434eac | ||
|
|
652ba5e232 | ||
|
|
18c33f93a6 | ||
|
|
011619cf23 | ||
|
|
126534997a | ||
|
|
eae8e18c3a | ||
|
|
3fe258372a | ||
|
|
524bd808f3 | ||
|
|
156efaf48b | ||
|
|
24b78d2251 | ||
|
|
93ac431989 | ||
|
|
1c65d0ad5a | ||
|
|
a19b41c650 | ||
|
|
ffb5d3da8a | ||
|
|
d32f03deb8 | ||
|
|
7d213ce20c | ||
|
|
29360eb5e5 | ||
|
|
5e2ebff297 | ||
|
|
c2b046e661 | ||
|
|
dcdb92f45e | ||
|
|
fc45eaa121 | ||
|
|
1957136227 | ||
|
|
afc204307c | ||
|
|
b3e22f837b | ||
|
|
e2bde71a1c | ||
|
|
a320582cdc | ||
|
|
360ceaa458 | ||
|
|
973d18ea63 | ||
|
|
1c5fda6cad | ||
|
|
4baf9e41c5 | ||
|
|
dd004ebffd | ||
|
|
1244542711 | ||
|
|
ccb7e095e1 | ||
|
|
79518648c0 | ||
|
|
7eb6543991 | ||
|
|
a26696f35e | ||
|
|
459e7822db | ||
|
|
22572c2286 | ||
|
|
db50a0814e | ||
|
|
506ff7ad8c |
7
.gitignore
vendored
@@ -27,3 +27,10 @@ SVG
|
||||
**/process_full/
|
||||
**/machine_full/
|
||||
**/filament_full/
|
||||
.idea/
|
||||
<<<<<<< HEAD (ad709f NEW: Official filament color selection approved)
|
||||
=======
|
||||
test.js
|
||||
/.cache/
|
||||
.clangd
|
||||
>>>>>>> CHANGE (a6529d ENH: support parts skipping function)
|
||||
@@ -84,17 +84,26 @@ fi
|
||||
|
||||
DISTRIBUTION=$(awk -F= '/^ID=/ {print $2}' /etc/os-release)
|
||||
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}" ]]
|
||||
@@ -119,7 +128,7 @@ fi
|
||||
if ! [[ -n "${DISABLE_PARALLEL_LIMIT}" ]]
|
||||
then
|
||||
FREE_MEM_GB=$(free -g -t | grep 'Mem' | rev | cut -d" " -f1 | rev)
|
||||
MAX_THREADS=$(echo "scale=0; $FREE_MEM_GB / 2.5" | bc)
|
||||
MAX_THREADS=$((FREE_MEM_GB * 10 / 25))
|
||||
if [ "$MAX_THREADS" -lt 1 ]; then
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL=1
|
||||
else
|
||||
|
||||
244
BuildMac.sh
Normal file
@@ -0,0 +1,244 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
while getopts "1dpa:st:xbc:h" opt; do
|
||||
case "${opt}" in
|
||||
d )
|
||||
export BUILD_TARGET="deps"
|
||||
;;
|
||||
p )
|
||||
export PACK_DEPS="1"
|
||||
;;
|
||||
a )
|
||||
export ARCH="$OPTARG"
|
||||
;;
|
||||
s )
|
||||
export BUILD_TARGET="slicer"
|
||||
;;
|
||||
t )
|
||||
export OSX_DEPLOYMENT_TARGET="$OPTARG"
|
||||
;;
|
||||
x )
|
||||
export SLICER_CMAKE_GENERATOR="Ninja"
|
||||
export SLICER_BUILD_TARGET="all"
|
||||
export DEPS_CMAKE_GENERATOR="Ninja"
|
||||
;;
|
||||
b )
|
||||
export BUILD_ONLY="1"
|
||||
;;
|
||||
c )
|
||||
export BUILD_CONFIG="$OPTARG"
|
||||
;;
|
||||
1 )
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL=1
|
||||
;;
|
||||
h ) echo "Usage: ./BuildMac.sh [-1][-d][-s][-x][-b][-c]"
|
||||
echo " -d: Build deps"
|
||||
echo " -a: Set ARCHITECTURE (arm64 or x86_64 or universal)"
|
||||
echo " -s: Build slicer only"
|
||||
echo " -t: Specify minimum version of the target platform, default is 10.15"
|
||||
echo " -x: Use Ninja CMake generator, default is Xcode"
|
||||
echo " -b: Build without reconfiguring CMake"
|
||||
echo " -c: Set CMake build configuration, default is Release"
|
||||
echo " -1: limit builds to 1 core (where possible)"
|
||||
exit 0
|
||||
;;
|
||||
* )
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z "$ARCH" ]; then
|
||||
ARCH="$(uname -m)"
|
||||
export ARCH
|
||||
fi
|
||||
|
||||
if [ -z "$BUILD_CONFIG" ]; then
|
||||
export BUILD_CONFIG="Release"
|
||||
fi
|
||||
|
||||
if [ -z "$BUILD_TARGET" ]; then
|
||||
export BUILD_TARGET="all"
|
||||
fi
|
||||
|
||||
if [ -z "$SLICER_CMAKE_GENERATOR" ]; then
|
||||
export SLICER_CMAKE_GENERATOR="Xcode"
|
||||
fi
|
||||
|
||||
if [ -z "$SLICER_BUILD_TARGET" ]; then
|
||||
export SLICER_BUILD_TARGET="ALL_BUILD"
|
||||
fi
|
||||
|
||||
if [ -z "$DEPS_CMAKE_GENERATOR" ]; then
|
||||
export DEPS_CMAKE_GENERATOR="Unix Makefiles"
|
||||
fi
|
||||
|
||||
if [ -z "$OSX_DEPLOYMENT_TARGET" ]; then
|
||||
export OSX_DEPLOYMENT_TARGET="10.15"
|
||||
fi
|
||||
|
||||
echo "Build params:"
|
||||
echo " - ARCH: $ARCH"
|
||||
echo " - BUILD_CONFIG: $BUILD_CONFIG"
|
||||
echo " - BUILD_TARGET: $BUILD_TARGET"
|
||||
echo " - CMAKE_GENERATOR: $SLICER_CMAKE_GENERATOR for Slicer, $DEPS_CMAKE_GENERATOR for deps"
|
||||
echo " - OSX_DEPLOYMENT_TARGET: $OSX_DEPLOYMENT_TARGET"
|
||||
echo " - CMAKE_BUILD_PARALLEL_LEVEL: $CMAKE_BUILD_PARALLEL_LEVEL"
|
||||
echo
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$ARCH"
|
||||
DEPS_DIR="$PROJECT_DIR/deps"
|
||||
DEPS_BUILD_DIR="$DEPS_DIR/build/$ARCH"
|
||||
DEPS="$DEPS_BUILD_DIR/QIDIStudio_deps"
|
||||
|
||||
if [ "$SLICER_CMAKE_GENERATOR" == "Xcode" ]; then
|
||||
export BUILD_DIR_CONFIG_SUBDIR="/$BUILD_CONFIG"
|
||||
else
|
||||
export BUILD_DIR_CONFIG_SUBDIR=""
|
||||
fi
|
||||
|
||||
function build_deps() {
|
||||
# iterate over two architectures: x86_64 and arm64
|
||||
for _ARCH in x86_64 arm64; do
|
||||
# if ARCH is universal or equal to _ARCH
|
||||
if [ "$ARCH" == "universal" ] || [ "$ARCH" == "$_ARCH" ]; then
|
||||
|
||||
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$_ARCH"
|
||||
DEPS_BUILD_DIR="$DEPS_DIR/build/$_ARCH"
|
||||
DEPS="$DEPS_BUILD_DIR/QIDIStudio_deps"
|
||||
|
||||
echo "Building deps..."
|
||||
(
|
||||
set -x
|
||||
mkdir -p "$DEPS"
|
||||
cd "$DEPS_BUILD_DIR"
|
||||
if [ "1." != "$BUILD_ONLY". ]; then
|
||||
cmake "${DEPS_DIR}" \
|
||||
-G "${DEPS_CMAKE_GENERATOR}" \
|
||||
-DDESTDIR="$DEPS" \
|
||||
-DOPENSSL_ARCH="darwin64-${_ARCH}-cc" \
|
||||
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
|
||||
-DCMAKE_OSX_ARCHITECTURES:STRING="${_ARCH}" \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
|
||||
fi
|
||||
cmake --build . --parallel ${CMAKE_BUILD_PARALLEL_LEVEL} --config "$BUILD_CONFIG" --target deps
|
||||
)
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
function pack_deps() {
|
||||
echo "Packing deps..."
|
||||
(
|
||||
set -x
|
||||
cd "$DEPS_DIR"
|
||||
tar -zcvf "QIDIStudio_dep_mac_${ARCH}_$(date +"%Y%m%d").tar.gz" "build"
|
||||
)
|
||||
}
|
||||
|
||||
function build_slicer() {
|
||||
# iterate over two architectures: x86_64 and arm64
|
||||
for _ARCH in x86_64 arm64; do
|
||||
# if ARCH is universal or equal to _ARCH
|
||||
if [ "$ARCH" == "universal" ] || [ "$ARCH" == "$_ARCH" ]; then
|
||||
|
||||
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$_ARCH"
|
||||
DEPS_BUILD_DIR="$DEPS_DIR/build/$_ARCH"
|
||||
DEPS="$DEPS_BUILD_DIR/QIDIStudio_deps"
|
||||
|
||||
echo "Building slicer for $_ARCH..."
|
||||
(
|
||||
set -x
|
||||
mkdir -p "$PROJECT_BUILD_DIR"
|
||||
cd "$PROJECT_BUILD_DIR"
|
||||
if [ "1." != "$BUILD_ONLY". ]; then
|
||||
cmake "${PROJECT_DIR}" \
|
||||
-G "${SLICER_CMAKE_GENERATOR}" \
|
||||
-DQDT_RELEASE_TO_PUBLIC=1 \
|
||||
-DQDT_INTERNAL_TESTING=0 \
|
||||
-DCMAKE_PREFIX_PATH="$DEPS/usr/local" \
|
||||
-DCMAKE_INSTALL_PREFIX="$PWD/QIDIStudio" \
|
||||
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
|
||||
-DCMAKE_MACOSX_RPATH=ON \
|
||||
-DCMAKE_INSTALL_RPATH="${DEPS}/usr/local" \
|
||||
-DCMAKE_MACOSX_BUNDLE=ON \
|
||||
-DCMAKE_OSX_ARCHITECTURES="${_ARCH}" \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
|
||||
fi
|
||||
cmake --build . --config "$BUILD_CONFIG" --target "$SLICER_BUILD_TARGET"
|
||||
)
|
||||
|
||||
|
||||
echo "Fix macOS app package..."
|
||||
(
|
||||
cd "$PROJECT_BUILD_DIR"
|
||||
mkdir -p QIDIStudio
|
||||
cd QIDIStudio
|
||||
# remove previously built app
|
||||
rm -rf ./QIDIStudio.app
|
||||
# fully copy newly built app
|
||||
cp -pR "../src$BUILD_DIR_CONFIG_SUBDIR/QIDIStudio.app" ./QIDIStudio.app
|
||||
# fix resources
|
||||
resources_path=$(readlink ./QIDIStudio.app/Contents/Resources)
|
||||
rm ./QIDIStudio.app/Contents/Resources
|
||||
cp -R "$resources_path" ./QIDIStudio.app/Contents/Resources
|
||||
# delete .DS_Store file
|
||||
find ./QIDIStudio.app/ -name '.DS_Store' -delete
|
||||
)
|
||||
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
function build_universal() {
|
||||
echo "Building universal binary..."
|
||||
|
||||
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$ARCH"
|
||||
|
||||
# Create universal binary
|
||||
echo "Creating universal binary..."
|
||||
# PROJECT_BUILD_DIR="$PROJECT_DIR/build_Universal"
|
||||
mkdir -p "$PROJECT_BUILD_DIR/QIDIStudio"
|
||||
UNIVERSAL_APP="$PROJECT_BUILD_DIR/QIDIStudio/QIDIStudio.app"
|
||||
rm -rf "$UNIVERSAL_APP"
|
||||
cp -R "$PROJECT_DIR/build/arm64/QIDIStudio/QIDIStudio.app" "$UNIVERSAL_APP"
|
||||
|
||||
# Get the binary path inside the .app bundle
|
||||
BINARY_PATH="Contents/MacOS/QIDIStudio"
|
||||
|
||||
# Create universal binary using lipo
|
||||
lipo -create \
|
||||
"$PROJECT_DIR/build/x86_64/QIDIStudio/QIDIStudio.app/$BINARY_PATH" \
|
||||
"$PROJECT_DIR/build/arm64/QIDIStudio/QIDIStudio.app/$BINARY_PATH" \
|
||||
-output "$UNIVERSAL_APP/$BINARY_PATH"
|
||||
|
||||
echo "Universal binary created at $UNIVERSAL_APP"
|
||||
}
|
||||
|
||||
case "${BUILD_TARGET}" in
|
||||
all)
|
||||
build_deps
|
||||
build_slicer
|
||||
;;
|
||||
deps)
|
||||
build_deps
|
||||
;;
|
||||
slicer)
|
||||
build_slicer
|
||||
;;
|
||||
*)
|
||||
echo "Unknown target: $BUILD_TARGET. Available targets: deps, slicer, all."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "$ARCH" = "universal" ] && [ "$BUILD_TARGET" != "deps" ]; then
|
||||
build_universal
|
||||
fi
|
||||
|
||||
if [ "1." == "$PACK_DEPS". ]; then
|
||||
pack_deps
|
||||
fi
|
||||
@@ -42,6 +42,8 @@ set(SLIC3R_GTK "2" CACHE STRING "GTK version to use with wxWidgets on Linux")
|
||||
|
||||
set(IS_CROSS_COMPILE FALSE)
|
||||
|
||||
set(FLATPAK FALSE CACHE BOOL "Not copy FFMPEG file")
|
||||
|
||||
|
||||
if (APPLE)
|
||||
set(CMAKE_FIND_FRAMEWORK LAST)
|
||||
@@ -53,7 +55,12 @@ 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 ()
|
||||
|
||||
# Proposal for C++ unit tests and sandboxes
|
||||
@@ -167,6 +174,15 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
# WIN10SDK_PATH is used to point CMake to the WIN10 SDK installation directory.
|
||||
# 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")
|
||||
message(STATUS ".git: directory")
|
||||
configure_file(
|
||||
"${CMAKE_SOURCE_DIR}/scripts/hooks/pre-commit"
|
||||
"${CMAKE_SOURCE_DIR}/.git/hooks/pre-commit"
|
||||
)
|
||||
endif()
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
if(NOT DEFINED WIN10SDK_PATH)
|
||||
if(DEFINED ENV{WIN10SDK_PATH})
|
||||
set(WIN10SDK_PATH "$ENV{WIN10SDK_PATH}")
|
||||
@@ -234,6 +250,8 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP
|
||||
# On GCC and Clang, no return from a non-void function is a warning only. Here, we make it an error.
|
||||
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)
|
||||
@@ -247,6 +265,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
|
||||
@@ -301,7 +323,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>")
|
||||
@@ -343,7 +365,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})
|
||||
|
||||
@@ -362,7 +384,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})
|
||||
@@ -500,7 +522,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}
|
||||
@@ -517,7 +539,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()
|
||||
@@ -619,6 +641,10 @@ function(qidistudio_copy_dlls target config postfix output_dlls)
|
||||
${CMAKE_PREFIX_PATH}/bin/occt/TKXDESTEP.dll
|
||||
${CMAKE_PREFIX_PATH}/bin/occt/TKXSBase.dll
|
||||
${CMAKE_PREFIX_PATH}/bin/freetype.dll
|
||||
${CMAKE_PREFIX_PATH}/bin/avcodec-61.dll
|
||||
${CMAKE_PREFIX_PATH}/bin/swresample-5.dll
|
||||
${CMAKE_PREFIX_PATH}/bin/swscale-8.dll
|
||||
${CMAKE_PREFIX_PATH}/bin/avutil-59.dll
|
||||
DESTINATION ${_out_dir})
|
||||
|
||||
set(${output_dlls}
|
||||
@@ -654,11 +680,50 @@ function(qidistudio_copy_dlls target config postfix output_dlls)
|
||||
${_out_dir}/TKXSBase.dll
|
||||
|
||||
${_out_dir}/freetype.dll
|
||||
${_out_dir}/avcodec-61.dll
|
||||
${_out_dir}/swresample-5.dll
|
||||
${_out_dir}/swscale-8.dll
|
||||
${_out_dir}/avutil-59.dll
|
||||
PARENT_SCOPE
|
||||
)
|
||||
|
||||
|
||||
endfunction()
|
||||
|
||||
function(qidistudio_copy_sos target config postfix output_sos)
|
||||
|
||||
set(_out_dir "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
message ("set out_dir to CMAKE_CURRENT_BINARY_DIR: ${_out_dir}")
|
||||
|
||||
file(COPY ${CMAKE_PREFIX_PATH}/lib/libavcodec.so
|
||||
${CMAKE_PREFIX_PATH}/lib/libavcodec.so.61
|
||||
${CMAKE_PREFIX_PATH}/lib/libavcodec.so.61.3.100
|
||||
${CMAKE_PREFIX_PATH}/lib/libavutil.so
|
||||
${CMAKE_PREFIX_PATH}/lib/libavutil.so.59
|
||||
${CMAKE_PREFIX_PATH}/lib/libavutil.so.59.8.100
|
||||
${CMAKE_PREFIX_PATH}/lib/libswscale.so
|
||||
${CMAKE_PREFIX_PATH}/lib/libswscale.so.8
|
||||
${CMAKE_PREFIX_PATH}/lib/libswscale.so.8.1.100
|
||||
${CMAKE_PREFIX_PATH}/lib/libswresample.so
|
||||
${CMAKE_PREFIX_PATH}/lib/libswresample.so.5
|
||||
${CMAKE_PREFIX_PATH}/lib/libswresample.so.5.1.100
|
||||
DESTINATION ${_out_dir})
|
||||
|
||||
set(${output_dlls}
|
||||
${_out_dir}/libavcodec.so
|
||||
${_out_dir}/libavcodec.so.61
|
||||
${_out_dir}/libavcodec.so.61.3.100
|
||||
${_out_dir}/libavutil.so
|
||||
${_out_dir}/libavutil.so.59
|
||||
${_out_dir}/libavutil.so.59.8.100
|
||||
${_out_dir}/libswscale.so
|
||||
${_out_dir}/libswscale.so.8
|
||||
${_out_dir}/libswscale.so.8.1.100
|
||||
${_out_dir}/libswresample.so
|
||||
${_out_dir}/libswresample.so.5
|
||||
${_out_dir}/libswresample.so.5.1.100
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endfunction()
|
||||
|
||||
# libslic3r, QIDIStudio GUI and the QIDIStudio executable.
|
||||
add_subdirectory(src)
|
||||
@@ -714,4 +779,18 @@ else ()
|
||||
install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "${CMAKE_INSTALL_PREFIX}/resources")
|
||||
endif ()
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND NOT FLATPAK)
|
||||
set(LIBRARY_FILES
|
||||
${LIBDIR_BIN}/libavcodec.so.61
|
||||
${LIBDIR_BIN}/libavcodec.so.61.3.100
|
||||
${LIBDIR_BIN}/libavutil.so.59
|
||||
${LIBDIR_BIN}/libavutil.so.59.8.100
|
||||
${LIBDIR_BIN}/libswresample.so.5
|
||||
${LIBDIR_BIN}/libswresample.so.5.1.100
|
||||
${LIBDIR_BIN}/libswscale.so.8
|
||||
${LIBDIR_BIN}/libswscale.so.8.1.100
|
||||
)
|
||||
install(FILES ${LIBRARY_FILES} DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
|
||||
endif ()
|
||||
|
||||
configure_file(${LIBDIR}/platform/unix/fhs.hpp.in ${LIBDIR_BIN}/platform/unix/fhs.hpp)
|
||||
|
||||
@@ -9,7 +9,7 @@ set -x
|
||||
# the simplicity of a single Docker image and a one-time compilation
|
||||
# seems better.
|
||||
docker build -t qidistudio \
|
||||
--build-arg USER=$USER \
|
||||
--build-arg USER=${USER:-root} \
|
||||
--build-arg UID=$(id -u) \
|
||||
--build-arg GID=$(id -g) \
|
||||
$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 \
|
||||
# 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.qidilab.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>
|
||||
@@ -129,5 +134,10 @@
|
||||
<true/>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
2
deps/Boost/0001-Boost-fix.patch
vendored
@@ -1,5 +1,5 @@
|
||||
From 1d6cd7c2f8640db3cda194c1b9b82f1e4b321395 Mon Sep 17 00:00:00 2001
|
||||
From: "chunmao.guo" <chunmao.guo@qidilab.com>
|
||||
From: "chunmao.guo" <chunmao.guo@qiditech.com>
|
||||
Date: Thu, 5 Jan 2023 15:55:57 +0800
|
||||
Subject: [PATCH] FIX: limit_handles
|
||||
|
||||
|
||||
174
deps/Boost/Boost.cmake
vendored
@@ -1,160 +1,26 @@
|
||||
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/qidilab/boost/releases/download/1.78.0/boost_1_78_0.zip"
|
||||
URL_HASH SHA256=f22143b5528e081123c3c5ed437e92f648fe69748e95fa6e2bd41484e2986cc3
|
||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/Boost
|
||||
CONFIGURE_COMMAND "${_bootstrap_cmd}"
|
||||
PATCH_COMMAND ${_patch_command}
|
||||
BUILD_COMMAND "${_build_cmd}"
|
||||
BUILD_IN_SOURCE ON
|
||||
INSTALL_COMMAND "${_install_cmd}"
|
||||
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 |
|
||||
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);
|
||||
3
deps/CGAL/CGAL.cmake
vendored
@@ -1,8 +1,5 @@
|
||||
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
|
||||
DEPENDS ${BOOST_PKG} dep_GMP dep_MPFR
|
||||
|
||||
40
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 ()
|
||||
@@ -39,6 +42,7 @@ option(DEP_BUILD_OPENSSL "Compile openssl" ON)
|
||||
option(DEP_BUILD_GLFW "Compile GLFW" ON)
|
||||
option(DEP_BUILD_FREETYPE "Compile freetype" ON)
|
||||
option(DEP_BUILD_WXWIDGETS "Compile wxWidgets" ON)
|
||||
option(DEP_BUILD_FFMPEG "Compile ffmpeg" ON)
|
||||
|
||||
set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory")
|
||||
set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH "Path for downloaded source packages.")
|
||||
@@ -49,6 +53,24 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
option(DEP_WX_GTK3 "Build wxWidgets against GTK3" OFF)
|
||||
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
|
||||
@@ -71,6 +93,17 @@ if (NOT _is_multi AND NOT CMAKE_BUILD_TYPE)
|
||||
message(STATUS "Forcing CMAKE_BUILD_TYPE to Release as it was not specified.")
|
||||
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})
|
||||
|
||||
@@ -101,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}
|
||||
@@ -229,6 +263,11 @@ if (DEP_BUILD_FREETYPE)
|
||||
endif ()
|
||||
include(OCCT/OCCT.cmake)
|
||||
include(OpenCV/OpenCV.cmake)
|
||||
set(FFMPEG_PKG "")
|
||||
if (DEP_BUILD_FFMPEG)
|
||||
include(FFMPEG/FFMPEG.cmake)
|
||||
set(FFMPEG_PKG dep_FFMPEG)
|
||||
endif ()
|
||||
|
||||
set(_dep_list
|
||||
${BOOST_PKG}
|
||||
@@ -247,6 +286,7 @@ set(_dep_list
|
||||
${ZLIB_PKG}
|
||||
${EXPAT_PKG}
|
||||
${FREETYPE_PKG}
|
||||
${FFMPEG_PKG}
|
||||
)
|
||||
|
||||
if (MSVC)
|
||||
|
||||
86
deps/FFMPEG/FFMPEG.cmake
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
set(_conf_cmd ./configure)
|
||||
|
||||
if (MSVC)
|
||||
set(_dstdir ${DESTDIR}/usr/local)
|
||||
set(_source_dir "${CMAKE_BINARY_DIR}/dep_FFMPEG-prefix/src/dep_FFMPEG")
|
||||
ExternalProject_Add(dep_FFMPEG
|
||||
URL https://github.com/bambulab/ffmpeg_prebuilts/releases/download/7.0.2/7.0.2_msvc.zip
|
||||
URL_HASH SHA256=DF44AE6B97CE84C720695AE7F151B4A9654915D1841C68F10D62A1189E0E7181
|
||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/FFMPEG
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND
|
||||
# COMMAND ${CMAKE_COMMAND} -E make_directory "${_dstdir}/bin"
|
||||
# COMMAND ${CMAKE_COMMAND} -E make_directory "${_dstdir}/lib"
|
||||
# COMMAND ${CMAKE_COMMAND} -E make_directory "${_dstdir}/include"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory "${_source_dir}/bin" "${_dstdir}/bin"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory "${_source_dir}/lib" "${_dstdir}/lib"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory "${_source_dir}/include" "${_dstdir}/include"
|
||||
)
|
||||
|
||||
else ()
|
||||
set(_extra_cmd "--pkg-config-flags=\"--static\"")
|
||||
string(APPEND _extra_cmd "--extra-cflags=\"-I ${DESTDIR}/usr/local/include\"")
|
||||
string(APPEND _extra_cmd "--extra-ldflags=\"-I ${DESTDIR}/usr/local/lib\"")
|
||||
string(APPEND _extra_cmd "--extra-libs=\"-lpthread -lm\"")
|
||||
string(APPEND _extra_cmd "--ld=\"g++\"")
|
||||
string(APPEND _extra_cmd "--bindir=\"${DESTDIR}/usr/local/bin\"")
|
||||
string(APPEND _extra_cmd "--enable-gpl")
|
||||
string(APPEND _extra_cmd "--enable-nonfree")
|
||||
|
||||
if (APPLE)
|
||||
set(_minos_cmd
|
||||
"CFLAGS=-mmacosx-version-min=${DEP_OSX_TARGET}"
|
||||
"LDFLAGS=-mmacosx-version-min=${DEP_OSX_TARGET}"
|
||||
)
|
||||
if (IS_CROSS_COMPILE)
|
||||
set(_cross_cmd --enable-cross-compile)
|
||||
set(_pic_cmd --enable-pic)
|
||||
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64")
|
||||
set(_arch_cmd --arch=arm64)
|
||||
set(_cc_cmd "--cc=clang -arch arm64")
|
||||
else()
|
||||
set(_arch_cmd --arch=x86_64)
|
||||
set(_cc_cmd "--cc=clang -arch x86_64")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(_build_j -j)
|
||||
if(DEFINED ENV{CMAKE_BUILD_PARALLEL_LEVEL})
|
||||
set(_build_j "-j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}")
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(dep_FFMPEG
|
||||
URL https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n7.0.2.tar.gz
|
||||
URL_HASH SHA256=5EB46D18D664A0CCADF7B0ADEE03BD3B7FA72893D667F36C69E202A807E6D533
|
||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/FFMPEG
|
||||
CONFIGURE_COMMAND ${_conf_cmd}
|
||||
${_cross_cmd}
|
||||
${_pic_cmd}
|
||||
${_arch_cmd}
|
||||
${_cc_cmd}
|
||||
--prefix="${DESTDIR}/usr/local"
|
||||
--enable-shared
|
||||
--disable-doc
|
||||
--enable-small
|
||||
--disable-outdevs
|
||||
--disable-filters
|
||||
--enable-filter=*null*,afade,*fifo,*format,*resample,aeval,allrgb,allyuv,atempo,pan,*bars,color,*key,crop,draw*,eq*,framerate,*_qsv,*_vaapi,*v4l2*,hw*,scale,volume,test*
|
||||
--disable-protocols
|
||||
--enable-protocol=file,fd,pipe,rtp,udp
|
||||
--disable-muxers
|
||||
--enable-muxer=rtp
|
||||
--disable-encoders
|
||||
--disable-decoders
|
||||
--enable-decoder=*aac*,h264*,mp3*,mjpeg,rv*
|
||||
--disable-demuxers
|
||||
--enable-demuxer=h264,mp3,mov
|
||||
--disable-zlib
|
||||
--disable-avdevice
|
||||
BUILD_IN_SOURCE ON
|
||||
BUILD_COMMAND make ${_build_j}
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
||||
endif()
|
||||
9
deps/GLEW/glew/CMakeLists.txt
vendored
@@ -3,9 +3,12 @@ project(GLEW)
|
||||
|
||||
find_package(OpenGL REQUIRED)
|
||||
|
||||
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/qidilab/gmp/archive/refs/tags/6.2.1.tar.gz
|
||||
URL https://github.com/bambulab/gmp/archive/refs/tags/6.2.1.tar.gz
|
||||
URL_HASH SHA256=705ae57ee2014b2c6fc0f572c85ee43276b99b6b256ee16c1a9d3a8c4e3609d5
|
||||
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
|
||||
6
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
|
||||
|
||||
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 ()
|
||||
|
||||
2
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()
|
||||
|
||||
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
|
||||
|
||||
4
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)
|
||||
@@ -52,6 +53,7 @@ qidistudio_add_cmake_project(wxWidgets
|
||||
-DwxUSE_LIBJPEG=sys
|
||||
-DwxUSE_LIBTIFF=sys
|
||||
-DwxUSE_EXPAT=sys
|
||||
${_wx_egl}
|
||||
)
|
||||
|
||||
if (MSVC)
|
||||
|
||||
@@ -13,7 +13,7 @@ Full manual for GNUgettext can be seen here: http://www.gnu.org/software/gettext
|
||||
|
||||
### Scenario 1. How do I add a translation or fix an existing translation
|
||||
1. Get PO-file 'QIDIStudio_xx.pot' from corresponding sub-folder here:
|
||||
https://github.com/qidilab/QIDIStudio/tree/master/qdt/i18n
|
||||
https://github.com/qiditech/QIDIStudio/tree/master/qdt/i18n
|
||||
2. Open this file in PoEdit as "Edit a translation"
|
||||
3. Apply your corrections to the translation
|
||||
4. Push changed QIDIStudio_xx.po into the original folder
|
||||
@@ -21,14 +21,14 @@ https://github.com/qidilab/QIDIStudio/tree/master/qdt/i18n
|
||||
|
||||
### Scenario 2. How do I add a new language support
|
||||
1. Get file QIDIStudio.pot here :
|
||||
https://github.com/qidilab/QIDIStudio/tree/master/qdt/i18n
|
||||
https://github.com/qiditech/QIDIStudio/tree/master/qdt/i18n
|
||||
2. Open it in PoEdit for "Create new translation"
|
||||
3. Select Translation Language (for example French).
|
||||
4. As a result you will have fr.po - the file containing translation to French.
|
||||
Notice. When the translation is complete you need to:
|
||||
- Rename the file to QIDIStudio_fr.po
|
||||
- Click "Save file" button. QIDIStudio_fr.mo will be created immediately
|
||||
- QIDI_Studio_fr.po needs to be copied into the sub-folder fr of https://github.com/qidilab/QIDIStudio/tree/master/qdt/i18n, and be pushed
|
||||
- QIDI_Studio_fr.po needs to be copied into the sub-folder fr of https://github.com/qiditech/QIDIStudio/tree/master/qdt/i18n, and be pushed
|
||||
- copy QIDIStudio_xx.mo into resources/i18n/xx and rename it to QIDIStudio.mo, then push the changed file.
|
||||
( name of folder "fr" means "French" - the translation language).
|
||||
|
||||
@@ -43,7 +43,7 @@ If you add new file resource, add it to the list of files containing macro `L()`
|
||||
### Scenario 4. How do I use GNUgettext to localize my own application taking QIDI Studio as an example
|
||||
|
||||
1. For convenience create a list of files with this macro `L(s)`. We have
|
||||
https://github.com/qidilab/QIDIStudio/blob/master/qdt/i18n/list.txt.
|
||||
https://github.com/qiditech/QIDIStudio/blob/master/qdt/i18n/list.txt.
|
||||
|
||||
2. Create template file(*.POT) with GNUgettext command:
|
||||
```
|
||||
|
||||
@@ -15,4 +15,4 @@
|
||||
7. 支持匈牙利语
|
||||
8. 一些关键问题修复
|
||||
|
||||
详细信息请查看:https://github.com/qidilab/QIDIStudio/releases
|
||||
详细信息请查看:https://github.com/qiditech/QIDIStudio/releases
|
||||
|
||||
@@ -15,4 +15,4 @@
|
||||
7. Added Magyar translations
|
||||
8. Fixed some known bugs
|
||||
|
||||
For details, please check https://github.com/qidilab/QIDIStudio/releases
|
||||
For details, please check https://github.com/qiditech/QIDIStudio/releases
|
||||
|
||||
@@ -27,16 +27,20 @@ REQUIRED_DEV_PACKAGES=(
|
||||
libunwind-dev
|
||||
libfuse2
|
||||
texinfo
|
||||
nasm
|
||||
yasm
|
||||
libx264-dev
|
||||
libbz2-dev
|
||||
)
|
||||
|
||||
if [[ -n "$UPDATE_LIB" ]]
|
||||
then
|
||||
# for ubuntu 22+ and 23+:
|
||||
ubu_major_version="$(grep VERSION_ID /etc/os-release | cut -d "=" -f 2 | cut -d "." -f 1 | tr -d /\"/)"
|
||||
if [ $ubu_major_version == "22" ] || [ $ubu_major_version == "23" ]
|
||||
if [ $ubu_major_version = "22" ] || [ $ubu_major_version = "23" ]
|
||||
then
|
||||
REQUIRED_DEV_PACKAGES+=(libwebkit2gtk-4.0-dev curl libfuse-dev libssl-dev libcurl4-openssl-dev m4)
|
||||
elif [ $ubu_major_version == "24" ]
|
||||
elif [ $ubu_major_version = "24" ]
|
||||
then
|
||||
REQUIRED_DEV_PACKAGES+=(libwebkit2gtk-4.1-dev)
|
||||
else
|
||||
@@ -56,4 +60,4 @@ then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
FOUND_GTK3_DEV=$(dpkg -l libgtk* | grep gtk-3-dev || echo '')
|
||||
FOUND_GTK3_DEV=$(dpkg -l libgtk* | grep gtk-3-dev || echo '')
|
||||
|
||||
@@ -35,6 +35,10 @@ REQUIRED_DEV_PACKAGES=(
|
||||
wget
|
||||
libcurl-devel
|
||||
libquadmath-devel
|
||||
nasm
|
||||
yasm
|
||||
x264-devel
|
||||
bzip2-devel
|
||||
)
|
||||
|
||||
if [[ -n "$UPDATE_LIB" ]]
|
||||
@@ -52,6 +56,8 @@ then
|
||||
done
|
||||
|
||||
if [ -n "${NEEDED_PKGS}" ]; then
|
||||
sudo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
|
||||
sudo dnf -y update
|
||||
sudo dnf install -y ${NEEDED_PKGS}
|
||||
fi
|
||||
echo -e "done\n"
|
||||
|
||||
@@ -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;
|
||||
@@ -17,14 +18,19 @@ const std::string Extrusion_Role_Tag = " FEATURE: ";
|
||||
const std::string Width_Tag = " LINE_WIDTH: ";
|
||||
const std::string Wipe_Start_Tag = " WIPE_START";
|
||||
const std::string Wipe_End_Tag = " WIPE_END";
|
||||
const std::string Wipe_Tower_Start_Tag = " WIPE_TOWER_START";
|
||||
const std::string Wipe_Tower_End_Tag = " WIPE_TOWER_END";
|
||||
const std::string Layer_Change_Tag = " CHANGE_LAYER";
|
||||
const std::string Height_Tag = " LAYER_HEIGHT: ";
|
||||
const std::string filament_flow_ratio_tag = " filament_flow_ratio";
|
||||
const std::string has_scarf_joint_seam_tag = " has_scarf_joint_seam";
|
||||
const std::string nozzle_temperature_Tag = " nozzle_temperature =";
|
||||
const std::string nozzle_temperature_initial_layer_Tag = " nozzle_temperature_initial_layer";
|
||||
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)
|
||||
{
|
||||
@@ -35,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')
|
||||
@@ -43,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;
|
||||
}
|
||||
}
|
||||
@@ -112,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;
|
||||
}
|
||||
|
||||
@@ -130,6 +164,12 @@ GCodeCheckResult GCodeChecker::parse_comment(GCodeLine& line)
|
||||
m_wiping = true;
|
||||
} else if (starts_with(comment, Wipe_End_Tag)) {
|
||||
m_wiping = false;
|
||||
}
|
||||
else if (starts_with(comment, Wipe_Tower_Start_Tag)) {
|
||||
is_wipe_tower = true;
|
||||
}
|
||||
else if (starts_with(comment, Wipe_Tower_End_Tag)) {
|
||||
is_wipe_tower = false;
|
||||
} else if (starts_with(comment, Height_Tag)) {
|
||||
std::string str = comment.substr(Height_Tag.size());
|
||||
if (!parse_double_from_str(str, m_height)) {
|
||||
@@ -162,6 +202,11 @@ GCodeCheckResult GCodeChecker::parse_comment(GCodeLine& line)
|
||||
return GCodeCheckResult::ParseFailed;
|
||||
}
|
||||
}
|
||||
else if (starts_with(comment, has_scarf_joint_seam_tag))
|
||||
{
|
||||
std::string str = comment.substr(has_scarf_joint_seam_tag.size() + 3);
|
||||
has_scarf_joint_seam = (str == "1");
|
||||
}
|
||||
else if (starts_with(comment, nozzle_temperature_Tag)) {
|
||||
std::string str = comment.substr(nozzle_temperature_Tag.size() + 1);
|
||||
if (!parse_double_from_str(str, nozzle_temperature)) {
|
||||
@@ -175,7 +220,36 @@ GCodeCheckResult GCodeChecker::parse_comment(GCodeLine& line)
|
||||
std::cout << "invalid nozzle temperature initial layer comment with invalid value!" << std::endl;
|
||||
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;
|
||||
@@ -232,6 +306,10 @@ GCodeCheckResult GCodeChecker::parse_command(GCodeLine& gcode_line)
|
||||
ret = parse_M104_M109(gcode_line);
|
||||
break;
|
||||
} // Set to nozzle temperature
|
||||
case 1020: {
|
||||
ret = parse_M1020(gcode_line);
|
||||
break;
|
||||
}
|
||||
default: { break; }
|
||||
}
|
||||
break;
|
||||
@@ -239,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;
|
||||
}
|
||||
|
||||
@@ -249,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;
|
||||
@@ -407,20 +500,31 @@ GCodeCheckResult GCodeChecker::parse_G92(GCodeLine& gcode_line)
|
||||
return GCodeCheckResult::ParseFailed;
|
||||
}
|
||||
|
||||
if (gcode_line.has(X))
|
||||
bool any_found = false;
|
||||
if (gcode_line.has(X)){
|
||||
m_origin[X] = m_end_position[X] - gcode_line.get(X);
|
||||
any_found = true;
|
||||
}
|
||||
|
||||
if (gcode_line.has(Y))
|
||||
if (gcode_line.has(Y)){
|
||||
m_origin[Y] = m_end_position[Y] - gcode_line.get(Y);
|
||||
any_found = true;
|
||||
}
|
||||
|
||||
if (gcode_line.has(Z))
|
||||
if (gcode_line.has(Z)){
|
||||
m_origin[Z] = m_end_position[Z] - gcode_line.get(Z);
|
||||
any_found = true;
|
||||
}
|
||||
|
||||
if (gcode_line.has(E))
|
||||
if (gcode_line.has(E)){
|
||||
m_end_position[E] = gcode_line.get(E);
|
||||
any_found = true;
|
||||
}
|
||||
|
||||
for (unsigned char a = X; a <= E; ++a) {
|
||||
m_origin[a] = m_end_position[a];
|
||||
if (!any_found) {
|
||||
for (unsigned char a = X; a <= E; ++a) {
|
||||
m_origin[a] = m_end_position[a];
|
||||
}
|
||||
}
|
||||
|
||||
return GCodeCheckResult::Success;
|
||||
@@ -455,20 +559,83 @@ GCodeCheckResult GCodeChecker::parse_M104_M109(const GCodeLine &gcode_line)
|
||||
const char *c = gcode_line.m_raw.c_str();
|
||||
const char *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);
|
||||
std::string strS = rs;
|
||||
strS = strS.substr(1);
|
||||
for (int i = 0; i < strS.size(); i++) {
|
||||
if (strS[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;
|
||||
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;
|
||||
}
|
||||
|
||||
GCodeCheckResult GCodeChecker::parse_M1020(const GCodeLine& gcode_line)
|
||||
{
|
||||
const char* c = gcode_line.m_raw.c_str();
|
||||
const char* rs = strchr(c, 'S');
|
||||
|
||||
if (rs != nullptr) {
|
||||
std::string str = rs;
|
||||
str = str.substr(1);
|
||||
for (int i = 0; i < str.size(); i++) {
|
||||
if (str[i] == ' ')
|
||||
str = str.substr(0, i);
|
||||
}
|
||||
|
||||
try {
|
||||
int value = std::stoi(str);
|
||||
if (value >= 0 && value <= filament_flow_ratio.size() - 1) {
|
||||
filament_id = value;
|
||||
flow_ratio = filament_flow_ratio[value];
|
||||
return GCodeCheckResult::Success;
|
||||
}
|
||||
else {
|
||||
return GCodeCheckResult::ParseFailed;
|
||||
}
|
||||
}
|
||||
catch (std::invalid_argument&) {
|
||||
std::cout << "Invalid argument: not a valid integer" << std::endl;
|
||||
return GCodeCheckResult::ParseFailed;
|
||||
}
|
||||
catch (std::out_of_range&) {
|
||||
std::cout << "Out of range: number is too large" << std::endl;
|
||||
return GCodeCheckResult::ParseFailed;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cout << "Missing 'S' character in the G-code line!" << std::endl;
|
||||
return GCodeCheckResult::ParseFailed;
|
||||
}
|
||||
}
|
||||
|
||||
double GCodeChecker::calculate_G1_width(const std::array<double, 3>& source,
|
||||
const std::array<double, 3>& target,
|
||||
double e, double height, bool is_bridge) const
|
||||
@@ -593,8 +760,21 @@ GCodeCheckResult GCodeChecker::check_G0_G1_width(const GCodeLine& line)
|
||||
std::array<double, 3> target = { m_end_position[X], m_end_position[Y], m_end_position[Z] };
|
||||
|
||||
bool is_bridge = m_role == erOverhangPerimeter || m_role == erBridgeInfill;
|
||||
if (!is_bridge) {
|
||||
double width_real = calculate_G1_width(source, target, delta_pos[E], m_height, is_bridge);
|
||||
if (!is_bridge && !is_wipe_tower) {
|
||||
double real_height = m_height;
|
||||
if (line.has(Z) && has_scarf_joint_seam && line.get(Z) != 0)
|
||||
{
|
||||
if (line.get(Z) == z_height)
|
||||
{
|
||||
return GCodeCheckResult::Success;
|
||||
}
|
||||
if (line.get(Z) && line.get(E))
|
||||
{
|
||||
return GCodeCheckResult::Success;
|
||||
}
|
||||
real_height = line.get(Z) - (z_height - m_height);
|
||||
}
|
||||
double width_real = calculate_G1_width(source, target, delta_pos[E], real_height, is_bridge);
|
||||
if (fabs(width_real - m_width) > WIDTH_THRESHOLD) {
|
||||
std::cout << "Invalid G0_G1 because has abnormal line width." << std::endl;
|
||||
std::cout << "Width: " << m_width << " Width_real: " << width_real << std::endl;
|
||||
@@ -607,6 +787,16 @@ GCodeCheckResult GCodeChecker::check_G0_G1_width(const GCodeLine& line)
|
||||
return GCodeCheckResult::Success;
|
||||
}
|
||||
|
||||
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 {
|
||||
|
||||
@@ -109,12 +110,14 @@ private:
|
||||
GCodeCheckResult parse_M82(const GCodeLine& gcode_line);
|
||||
GCodeCheckResult parse_M83(const GCodeLine& gcode_line);
|
||||
GCodeCheckResult parse_M104_M109(const GCodeLine &gcode_line);
|
||||
GCodeCheckResult parse_M1020(const GCodeLine& gcode_line);
|
||||
|
||||
GCodeCheckResult parse_comment(GCodeLine& gcode_line);
|
||||
|
||||
GCodeCheckResult 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,
|
||||
@@ -167,7 +170,7 @@ public:
|
||||
std::string cmd=input;
|
||||
size_t read = 0;
|
||||
|
||||
while (cmd.size() >= 5)
|
||||
while (cmd.find(',') != std::string::npos)
|
||||
{
|
||||
int pt = 0;
|
||||
for (pt = 0; pt < cmd.size(); pt++) {
|
||||
@@ -213,10 +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,12 @@
|
||||
src/libslic3r/PresetBundle.cpp
|
||||
src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.h
|
||||
src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp
|
||||
src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.h
|
||||
src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp
|
||||
src/slic3r/GUI/Gizmos/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 +22,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,10 +43,14 @@ 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
|
||||
@@ -50,7 +64,7 @@ src/slic3r/GUI/AMSMaterialsSetting.cpp
|
||||
src/slic3r/GUI/ExtrusionCalibration.cpp
|
||||
src/slic3r/GUI/AMSMappingPopup.cpp
|
||||
src/slic3r/GUI/AMSSetting.cpp
|
||||
src/slic3r/GUI/QDTTopbar.cpp
|
||||
src/slic3r/GUI/BBLTopbar.cpp
|
||||
src/slic3r/GUI/DownloadProgressDialog.cpp
|
||||
src/slic3r/GUI/RecenterDialog.cpp
|
||||
src/slic3r/GUI/BackgroundSlicingProcess.cpp
|
||||
@@ -70,9 +84,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
|
||||
@@ -95,6 +113,7 @@ 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 +125,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
|
||||
@@ -121,6 +141,7 @@ 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,7 +161,9 @@ 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
|
||||
@@ -163,4 +186,16 @@ 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
|
||||
|
||||
|
Before Width: | Height: | Size: 560 KiB After Width: | Height: | Size: 502 KiB |
@@ -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-----
|
||||
@@ -155,7 +155,7 @@ image = images/dailytips_TypesOfSupports.png
|
||||
|
||||
; [hint:Printing Silk Filament]
|
||||
; text = Printing Silk Filament\nDid you know that Silk filament needs special consideration to print it successfully? Higher temperature and lower speed are always recommended for the best results.
|
||||
; documentation_link= https://wiki.qidilab.com/en/x1/manual/printing-with-silk-filaments
|
||||
; documentation_link= https://wiki.qiditech.com/en/x1/manual/printing-with-silk-filaments
|
||||
|
||||
[hint:Brim for better adhesion]
|
||||
text = Brim for better adhesion\nDid you know that when printing models have a small contact interface with the printing surface, it's recommended to use a brim?
|
||||
@@ -173,7 +173,7 @@ image = images/dailytips_StackObject.png
|
||||
|
||||
# hint:Flush into support/objects/infill]
|
||||
# text = Flush into support/objects/infill\nDid you know that you can save the wasted filament by flushing them into support/objects/infill during filament change?
|
||||
# documentation_link= https://wiki.qidilab.com/en/software/qidi-studio/reduce-wasting-during-filament-change
|
||||
# documentation_link= https://wiki.qiditech.com/en/software/qidi-studio/reduce-wasting-during-filament-change
|
||||
|
||||
[hint:Improve strength]
|
||||
text = Improve strength\nDid you know that you can use more wall loops and higher sparse infill density to improve the strength of the model?
|
||||
|
||||
329
resources/flush/flush_data_dual_highflow.txt
Normal file
@@ -0,0 +1,329 @@
|
||||
colors
|
||||
#000000 #FFFFFF #545454 #8E9089 #C12E1F #F4EE2A #0086D6 #F7E6DE #00AE42 #5E43B7 #482960 #0056B8 #FEC600 #EC008C #F5547C #6F5034 #FF9016 #00B1B7 #BECF00
|
||||
src dst flush
|
||||
#000000 #FFFFFF 900
|
||||
#000000 #545454 270
|
||||
#000000 #C12E1F 900
|
||||
#000000 #F4EE2A 900
|
||||
#000000 #0086D6 900
|
||||
#000000 #F7E6DE 900
|
||||
#000000 #00AE42 900
|
||||
#000000 #5E43B7 900
|
||||
#000000 #482960 360
|
||||
#000000 #0056B8 660
|
||||
#000000 #FEC600 900
|
||||
#000000 #EC008C 900
|
||||
#000000 #F5547C 900
|
||||
#000000 #6F5034 510
|
||||
#000000 #FF9016 900
|
||||
#000000 #BECF00 900
|
||||
#FFFFFF #000000 120
|
||||
#FFFFFF #545454 150
|
||||
#FFFFFF #8E9089 120
|
||||
#FFFFFF #C12E1F 120
|
||||
#FFFFFF #F4EE2A 150
|
||||
#FFFFFF #0086D6 90
|
||||
#FFFFFF #F7E6DE 120
|
||||
#FFFFFF #00AE42 120
|
||||
#FFFFFF #5E43B7 150
|
||||
#FFFFFF #482960 120
|
||||
#FFFFFF #0056B8 150
|
||||
#FFFFFF #FEC600 120
|
||||
#FFFFFF #EC008C 150
|
||||
#FFFFFF #F5547C 120
|
||||
#FFFFFF #6F5034 150
|
||||
#FFFFFF #FF9016 120
|
||||
#FFFFFF #00B1B7 90
|
||||
#FFFFFF #BECF00 120
|
||||
#545454 #000000 150
|
||||
#545454 #FFFFFF 480
|
||||
#545454 #8E9089 210
|
||||
#545454 #C12E1F 270
|
||||
#545454 #F4EE2A 390
|
||||
#545454 #0086D6 240
|
||||
#545454 #F7E6DE 360
|
||||
#545454 #00AE42 330
|
||||
#545454 #5E43B7 180
|
||||
#545454 #482960 150
|
||||
#545454 #0056B8 180
|
||||
#545454 #FEC600 300
|
||||
#545454 #EC008C 240
|
||||
#545454 #F5547C 330
|
||||
#545454 #6F5034 120
|
||||
#545454 #FF9016 330
|
||||
#545454 #00B1B7 270
|
||||
#545454 #BECF00 330
|
||||
#8E9089 #000000 180
|
||||
#8E9089 #FFFFFF 330
|
||||
#8E9089 #545454 180
|
||||
#8E9089 #C12E1F 180
|
||||
#8E9089 #F4EE2A 360
|
||||
#8E9089 #0086D6 180
|
||||
#8E9089 #F7E6DE 360
|
||||
#8E9089 #00AE42 120
|
||||
#8E9089 #5E43B7 240
|
||||
#8E9089 #482960 240
|
||||
#8E9089 #0056B8 150
|
||||
#8E9089 #FEC600 330
|
||||
#8E9089 #EC008C 270
|
||||
#8E9089 #F5547C 240
|
||||
#8E9089 #6F5034 300
|
||||
#8E9089 #FF9016 300
|
||||
#8E9089 #00B1B7 180
|
||||
#8E9089 #BECF00 300
|
||||
#C12E1F #000000 150
|
||||
#C12E1F #FFFFFF 600
|
||||
#C12E1F #545454 570
|
||||
#C12E1F #8E9089 390
|
||||
#C12E1F #F4EE2A 900
|
||||
#C12E1F #0086D6 900
|
||||
#C12E1F #F7E6DE 900
|
||||
#C12E1F #00AE42 540
|
||||
#C12E1F #5E43B7 570
|
||||
#C12E1F #482960 210
|
||||
#C12E1F #0056B8 630
|
||||
#C12E1F #FEC600 420
|
||||
#C12E1F #EC008C 270
|
||||
#C12E1F #F5547C 300
|
||||
#C12E1F #6F5034 300
|
||||
#C12E1F #FF9016 390
|
||||
#C12E1F #00B1B7 600
|
||||
#C12E1F #BECF00 660
|
||||
#F4EE2A #000000 150
|
||||
#F4EE2A #FFFFFF 660
|
||||
#F4EE2A #545454 420
|
||||
#F4EE2A #8E9089 300
|
||||
#F4EE2A #C12E1F 180
|
||||
#F4EE2A #0086D6 900
|
||||
#F4EE2A #F7E6DE 900
|
||||
#F4EE2A #00AE42 180
|
||||
#F4EE2A #5E43B7 690
|
||||
#F4EE2A #0056B8 360
|
||||
#F4EE2A #FEC600 120
|
||||
#F4EE2A #EC008C 600
|
||||
#F4EE2A #F5547C 240
|
||||
#F4EE2A #6F5034 270
|
||||
#F4EE2A #FF9016 120
|
||||
#F4EE2A #00B1B7 630
|
||||
#F4EE2A #BECF00 120
|
||||
#0086D6 #000000 120
|
||||
#0086D6 #FFFFFF 510
|
||||
#0086D6 #545454 150
|
||||
#0086D6 #8E9089 180
|
||||
#0086D6 #C12E1F 300
|
||||
#0086D6 #F4EE2A 360
|
||||
#0086D6 #F7E6DE 480
|
||||
#0086D6 #00AE42 120
|
||||
#0086D6 #5E43B7 210
|
||||
#0086D6 #482960 120
|
||||
#0086D6 #0056B8 150
|
||||
#0086D6 #FEC600 330
|
||||
#0086D6 #EC008C 330
|
||||
#0086D6 #F5547C 330
|
||||
#0086D6 #6F5034 150
|
||||
#0086D6 #FF9016 300
|
||||
#0086D6 #00B1B7 120
|
||||
#0086D6 #BECF00 360
|
||||
#F7E6DE #000000 150
|
||||
#F7E6DE #FFFFFF 150
|
||||
#F7E6DE #545454 120
|
||||
#F7E6DE #8E9089 150
|
||||
#F7E6DE #C12E1F 150
|
||||
#F7E6DE #F4EE2A 120
|
||||
#F7E6DE #0086D6 180
|
||||
#F7E6DE #00AE42 150
|
||||
#F7E6DE #5E43B7 210
|
||||
#F7E6DE #482960 150
|
||||
#F7E6DE #0056B8 150
|
||||
#F7E6DE #FEC600 120
|
||||
#F7E6DE #EC008C 150
|
||||
#F7E6DE #F5547C 150
|
||||
#F7E6DE #6F5034 150
|
||||
#F7E6DE #FF9016 120
|
||||
#F7E6DE #00B1B7 120
|
||||
#F7E6DE #BECF00 120
|
||||
#00AE42 #000000 120
|
||||
#00AE42 #FFFFFF 690
|
||||
#00AE42 #545454 330
|
||||
#00AE42 #8E9089 330
|
||||
#00AE42 #C12E1F 270
|
||||
#00AE42 #F4EE2A 480
|
||||
#00AE42 #0086D6 750
|
||||
#00AE42 #F7E6DE 900
|
||||
#00AE42 #5E43B7 450
|
||||
#00AE42 #482960 210
|
||||
#00AE42 #0056B8 240
|
||||
#00AE42 #FEC600 420
|
||||
#00AE42 #F5547C 390
|
||||
#00AE42 #6F5034 210
|
||||
#00AE42 #FF9016 420
|
||||
#00AE42 #00B1B7 390
|
||||
#00AE42 #BECF00 300
|
||||
#5E43B7 #000000 150
|
||||
#5E43B7 #FFFFFF 360
|
||||
#5E43B7 #545454 150
|
||||
#5E43B7 #8E9089 180
|
||||
#5E43B7 #C12E1F 270
|
||||
#5E43B7 #F4EE2A 570
|
||||
#5E43B7 #0086D6 240
|
||||
#5E43B7 #F7E6DE 660
|
||||
#5E43B7 #00AE42 240
|
||||
#5E43B7 #482960 240
|
||||
#5E43B7 #0056B8 150
|
||||
#5E43B7 #FEC600 390
|
||||
#5E43B7 #EC008C 330
|
||||
#5E43B7 #F5547C 270
|
||||
#5E43B7 #6F5034 150
|
||||
#5E43B7 #FF9016 300
|
||||
#5E43B7 #00B1B7 270
|
||||
#5E43B7 #BECF00 390
|
||||
#482960 #000000 120
|
||||
#482960 #FFFFFF 570
|
||||
#482960 #545454 240
|
||||
#482960 #8E9089 330
|
||||
#482960 #C12E1F 480
|
||||
#482960 #F4EE2A 780
|
||||
#482960 #0086D6 420
|
||||
#482960 #F7E6DE 900
|
||||
#482960 #00AE42 510
|
||||
#482960 #5E43B7 270
|
||||
#482960 #0056B8 420
|
||||
#482960 #FEC600 540
|
||||
#482960 #EC008C 480
|
||||
#482960 #F5547C 390
|
||||
#482960 #6F5034 270
|
||||
#482960 #FF9016 510
|
||||
#482960 #00B1B7 480
|
||||
#482960 #BECF00 540
|
||||
#0056B8 #000000 120
|
||||
#0056B8 #FFFFFF 900
|
||||
#0056B8 #545454 240
|
||||
#0056B8 #8E9089 330
|
||||
#0056B8 #C12E1F 570
|
||||
#0056B8 #F4EE2A 900
|
||||
#0056B8 #0086D6 210
|
||||
#0056B8 #F7E6DE 780
|
||||
#0056B8 #00AE42 300
|
||||
#0056B8 #5E43B7 210
|
||||
#0056B8 #482960 270
|
||||
#0056B8 #FEC600 630
|
||||
#0056B8 #EC008C 540
|
||||
#0056B8 #F5547C 660
|
||||
#0056B8 #6F5034 300
|
||||
#0056B8 #FF9016 690
|
||||
#0056B8 #00B1B7 240
|
||||
#0056B8 #BECF00 540
|
||||
#FEC600 #000000 120
|
||||
#FEC600 #FFFFFF 630
|
||||
#FEC600 #545454 540
|
||||
#FEC600 #8E9089 480
|
||||
#FEC600 #C12E1F 180
|
||||
#FEC600 #F4EE2A 180
|
||||
#FEC600 #0086D6 900
|
||||
#FEC600 #F7E6DE 720
|
||||
#FEC600 #00AE42 210
|
||||
#FEC600 #5E43B7 900
|
||||
#FEC600 #482960 330
|
||||
#FEC600 #0056B8 900
|
||||
#FEC600 #EC008C 660
|
||||
#FEC600 #F5547C 390
|
||||
#FEC600 #6F5034 330
|
||||
#FEC600 #FF9016 270
|
||||
#FEC600 #00B1B7 630
|
||||
#FEC600 #BECF00 210
|
||||
#EC008C #000000 120
|
||||
#EC008C #FFFFFF 540
|
||||
#EC008C #545454 270
|
||||
#EC008C #8E9089 330
|
||||
#EC008C #C12E1F 120
|
||||
#EC008C #F4EE2A 900
|
||||
#EC008C #0086D6 330
|
||||
#EC008C #00AE42 450
|
||||
#EC008C #5E43B7 210
|
||||
#EC008C #482960 180
|
||||
#EC008C #0056B8 300
|
||||
#EC008C #FEC600 360
|
||||
#EC008C #F5547C 210
|
||||
#EC008C #6F5034 240
|
||||
#EC008C #FF9016 240
|
||||
#EC008C #00B1B7 450
|
||||
#EC008C #BECF00 510
|
||||
#F5547C #000000 120
|
||||
#F5547C #FFFFFF 570
|
||||
#F5547C #545454 210
|
||||
#F5547C #8E9089 240
|
||||
#F5547C #C12E1F 150
|
||||
#F5547C #F4EE2A 750
|
||||
#F5547C #0086D6 270
|
||||
#F5547C #F7E6DE 900
|
||||
#F5547C #00AE42 540
|
||||
#F5547C #5E43B7 150
|
||||
#F5547C #482960 180
|
||||
#F5547C #0056B8 150
|
||||
#F5547C #FEC600 330
|
||||
#F5547C #EC008C 150
|
||||
#F5547C #6F5034 180
|
||||
#F5547C #FF9016 270
|
||||
#F5547C #00B1B7 390
|
||||
#F5547C #BECF00 360
|
||||
#6F5034 #000000 150
|
||||
#6F5034 #FFFFFF 600
|
||||
#6F5034 #545454 150
|
||||
#6F5034 #8E9089 270
|
||||
#6F5034 #C12E1F 180
|
||||
#6F5034 #F4EE2A 360
|
||||
#6F5034 #0086D6 360
|
||||
#6F5034 #F7E6DE 390
|
||||
#6F5034 #00AE42 330
|
||||
#6F5034 #5E43B7 240
|
||||
#6F5034 #482960 180
|
||||
#6F5034 #0056B8 300
|
||||
#6F5034 #FEC600 300
|
||||
#6F5034 #EC008C 270
|
||||
#6F5034 #F5547C 240
|
||||
#6F5034 #FF9016 270
|
||||
#6F5034 #00B1B7 270
|
||||
#6F5034 #BECF00 390
|
||||
#FF9016 #000000 120
|
||||
#FF9016 #FFFFFF 450
|
||||
#FF9016 #545454 240
|
||||
#FF9016 #8E9089 300
|
||||
#FF9016 #C12E1F 150
|
||||
#FF9016 #F4EE2A 480
|
||||
#FF9016 #0086D6 660
|
||||
#FF9016 #F7E6DE 690
|
||||
#FF9016 #00AE42 360
|
||||
#FF9016 #5E43B7 360
|
||||
#FF9016 #482960 210
|
||||
#FF9016 #0056B8 330
|
||||
#FF9016 #FEC600 210
|
||||
#FF9016 #EC008C 240
|
||||
#FF9016 #F5547C 210
|
||||
#FF9016 #6F5034 270
|
||||
#FF9016 #00B1B7 390
|
||||
#FF9016 #BECF00 330
|
||||
#00B1B7 #FFFFFF 630
|
||||
#00B1B7 #8E9089 240
|
||||
#00B1B7 #F4EE2A 390
|
||||
#00B1B7 #EC008C 240
|
||||
#00B1B7 #6F5034 360
|
||||
#00B1B7 #FF9016 300
|
||||
#00B1B7 #00B1B7 390
|
||||
#00B1B7 #BECF00 300
|
||||
#BECF00 #000000 150
|
||||
#BECF00 #FFFFFF 630
|
||||
#BECF00 #8E9089 300
|
||||
#BECF00 #C12E1F 150
|
||||
#BECF00 #F4EE2A 150
|
||||
#BECF00 #0086D6 270
|
||||
#BECF00 #F7E6DE 540
|
||||
#BECF00 #00AE42 150
|
||||
#BECF00 #5E43B7 270
|
||||
#BECF00 #482960 210
|
||||
#BECF00 #0056B8 240
|
||||
#BECF00 #FEC600 120
|
||||
#BECF00 #EC008C 270
|
||||
#BECF00 #F5547C 270
|
||||
#BECF00 #6F5034 150
|
||||
#BECF00 #FF9016 120
|
||||
#BECF00 #00B1B7 330
|
||||
338
resources/flush/flush_data_dual_standard.txt
Normal file
@@ -0,0 +1,338 @@
|
||||
colors
|
||||
#000000 #FFFFFF #545454 #8E9089 #C12E1F #F4EE2A #0086D6 #F7E6DE #00AE42 #5E43B7 #482960 #0056B8 #FEC600 #EC008C #F5547C #6F5034 #FF9016 #00B1B7 #BECF00
|
||||
src dst flush
|
||||
#000000 #FFFFFF 900
|
||||
#000000 #545454 450
|
||||
#000000 #8E9089 540
|
||||
#000000 #C12E1F 600
|
||||
#000000 #F4EE2A 900
|
||||
#000000 #0086D6 570
|
||||
#000000 #F7E6DE 900
|
||||
#000000 #00AE42 810
|
||||
#000000 #5E43B7 480
|
||||
#000000 #482960 270
|
||||
#000000 #0056B8 540
|
||||
#000000 #FEC600 900
|
||||
#000000 #EC008C 900
|
||||
#000000 #F5547C 900
|
||||
#000000 #FF9016 900
|
||||
#000000 #00B1B7 630
|
||||
#000000 #BECF00 900
|
||||
#FFFFFF #000000 90
|
||||
#FFFFFF #545454 240
|
||||
#FFFFFF #8E9089 120
|
||||
#FFFFFF #C12E1F 90
|
||||
#FFFFFF #F4EE2A 90
|
||||
#FFFFFF #0086D6 90
|
||||
#FFFFFF #F7E6DE 90
|
||||
#FFFFFF #00AE42 120
|
||||
#FFFFFF #5E43B7 90
|
||||
#FFFFFF #0056B8 90
|
||||
#FFFFFF #FEC600 150
|
||||
#FFFFFF #EC008C 150
|
||||
#FFFFFF #F5547C 120
|
||||
#FFFFFF #6F5034 120
|
||||
#FFFFFF #FF9016 120
|
||||
#FFFFFF #00B1B7 120
|
||||
#FFFFFF #BECF00 90
|
||||
#545454 #000000 90
|
||||
#545454 #FFFFFF 360
|
||||
#545454 #8E9089 120
|
||||
#545454 #C12E1F 270
|
||||
#545454 #F4EE2A 330
|
||||
#545454 #0086D6 270
|
||||
#545454 #F7E6DE 390
|
||||
#545454 #00AE42 270
|
||||
#545454 #5E43B7 120
|
||||
#545454 #482960 150
|
||||
#545454 #0056B8 180
|
||||
#545454 #FEC600 300
|
||||
#545454 #EC008C 240
|
||||
#545454 #F5547C 300
|
||||
#545454 #6F5034 120
|
||||
#545454 #FF9016 240
|
||||
#545454 #00B1B7 270
|
||||
#545454 #BECF00 300
|
||||
#8E9089 #000000 270
|
||||
#8E9089 #FFFFFF 330
|
||||
#8E9089 #545454 300
|
||||
#8E9089 #C12E1F 240
|
||||
#8E9089 #F4EE2A 240
|
||||
#8E9089 #0086D6 240
|
||||
#8E9089 #F7E6DE 390
|
||||
#8E9089 #00AE42 210
|
||||
#8E9089 #5E43B7 270
|
||||
#8E9089 #482960 300
|
||||
#8E9089 #0056B8 180
|
||||
#8E9089 #FEC600 240
|
||||
#8E9089 #EC008C 240
|
||||
#8E9089 #F5547C 240
|
||||
#8E9089 #6F5034 210
|
||||
#8E9089 #FF9016 240
|
||||
#8E9089 #00B1B7 210
|
||||
#8E9089 #BECF00 270
|
||||
#C12E1F #000000 150
|
||||
#C12E1F #FFFFFF 900
|
||||
#C12E1F #545454 300
|
||||
#C12E1F #8E9089 570
|
||||
#C12E1F #F4EE2A 450
|
||||
#C12E1F #0086D6 390
|
||||
#C12E1F #F7E6DE 630
|
||||
#C12E1F #00AE42 420
|
||||
#C12E1F #5E43B7 330
|
||||
#C12E1F #482960 210
|
||||
#C12E1F #0056B8 300
|
||||
#C12E1F #FEC600 660
|
||||
#C12E1F #EC008C 240
|
||||
#C12E1F #F5547C 180
|
||||
#C12E1F #6F5034 210
|
||||
#C12E1F #FF9016 270
|
||||
#C12E1F #00B1B7 540
|
||||
#C12E1F #BECF00 360
|
||||
#F4EE2A #000000 150
|
||||
#F4EE2A #FFFFFF 900
|
||||
#F4EE2A #545454 390
|
||||
#F4EE2A #8E9089 450
|
||||
#F4EE2A #C12E1F 180
|
||||
#F4EE2A #0086D6 270
|
||||
#F4EE2A #F7E6DE 570
|
||||
#F4EE2A #00AE42 120
|
||||
#F4EE2A #5E43B7 330
|
||||
#F4EE2A #482960 330
|
||||
#F4EE2A #0056B8 240
|
||||
#F4EE2A #FEC600 90
|
||||
#F4EE2A #EC008C 330
|
||||
#F4EE2A #F5547C 420
|
||||
#F4EE2A #6F5034 240
|
||||
#F4EE2A #FF9016 150
|
||||
#F4EE2A #00B1B7 360
|
||||
#F4EE2A #BECF00 240
|
||||
#0086D6 #000000 150
|
||||
#0086D6 #FFFFFF 420
|
||||
#0086D6 #545454 120
|
||||
#0086D6 #8E9089 480
|
||||
#0086D6 #C12E1F 240
|
||||
#0086D6 #F4EE2A 360
|
||||
#0086D6 #F7E6DE 390
|
||||
#0086D6 #00AE42 120
|
||||
#0086D6 #5E43B7 150
|
||||
#0086D6 #482960 150
|
||||
#0086D6 #0056B8 120
|
||||
#0086D6 #EC008C 330
|
||||
#0086D6 #F5547C 330
|
||||
#0086D6 #6F5034 150
|
||||
#0086D6 #FF9016 300
|
||||
#0086D6 #00B1B7 150
|
||||
#0086D6 #BECF00 270
|
||||
#F7E6DE #000000 90
|
||||
#F7E6DE #FFFFFF 90
|
||||
#F7E6DE #545454 120
|
||||
#F7E6DE #8E9089 120
|
||||
#F7E6DE #C12E1F 90
|
||||
#F7E6DE #F4EE2A 60
|
||||
#F7E6DE #0086D6 90
|
||||
#F7E6DE #00AE42 90
|
||||
#F7E6DE #5E43B7 90
|
||||
#F7E6DE #482960 120
|
||||
#F7E6DE #0056B8 120
|
||||
#F7E6DE #FEC600 120
|
||||
#F7E6DE #EC008C 150
|
||||
#F7E6DE #F5547C 120
|
||||
#F7E6DE #6F5034 150
|
||||
#F7E6DE #FF9016 120
|
||||
#F7E6DE #00B1B7 90
|
||||
#F7E6DE #BECF00 120
|
||||
#00AE42 #000000 150
|
||||
#00AE42 #FFFFFF 900
|
||||
#00AE42 #545454 240
|
||||
#00AE42 #8E9089 330
|
||||
#00AE42 #C12E1F 210
|
||||
#00AE42 #F4EE2A 270
|
||||
#00AE42 #F7E6DE 360
|
||||
#00AE42 #5E43B7 180
|
||||
#00AE42 #482960 180
|
||||
#00AE42 #0056B8 240
|
||||
#00AE42 #FEC600 300
|
||||
#00AE42 #EC008C 300
|
||||
#00AE42 #F5547C 390
|
||||
#00AE42 #6F5034 180
|
||||
#00AE42 #FF9016 300
|
||||
#00AE42 #00B1B7 360
|
||||
#00AE42 #BECF00 270
|
||||
#5E43B7 #000000 90
|
||||
#5E43B7 #FFFFFF 630
|
||||
#5E43B7 #545454 150
|
||||
#5E43B7 #8E9089 210
|
||||
#5E43B7 #C12E1F 210
|
||||
#5E43B7 #F4EE2A 330
|
||||
#5E43B7 #0086D6 180
|
||||
#5E43B7 #F7E6DE 510
|
||||
#5E43B7 #00AE42 240
|
||||
#5E43B7 #482960 150
|
||||
#5E43B7 #0056B8 120
|
||||
#5E43B7 #FEC600 540
|
||||
#5E43B7 #EC008C 270
|
||||
#5E43B7 #F5547C 420
|
||||
#5E43B7 #6F5034 150
|
||||
#5E43B7 #FF9016 330
|
||||
#5E43B7 #00B1B7 270
|
||||
#5E43B7 #BECF00 330
|
||||
#482960 #000000 90
|
||||
#482960 #FFFFFF 900
|
||||
#482960 #545454 240
|
||||
#482960 #8E9089 510
|
||||
#482960 #C12E1F 360
|
||||
#482960 #F4EE2A 420
|
||||
#482960 #0086D6 330
|
||||
#482960 #F7E6DE 510
|
||||
#482960 #00AE42 390
|
||||
#482960 #5E43B7 270
|
||||
#482960 #0056B8 300
|
||||
#482960 #FEC600 660
|
||||
#482960 #EC008C 360
|
||||
#482960 #F5547C 510
|
||||
#482960 #6F5034 180
|
||||
#482960 #FF9016 540
|
||||
#482960 #00B1B7 450
|
||||
#482960 #BECF00 600
|
||||
#0056B8 #000000 90
|
||||
#0056B8 #FFFFFF 780
|
||||
#0056B8 #545454 270
|
||||
#0056B8 #8E9089 270
|
||||
#0056B8 #C12E1F 330
|
||||
#0056B8 #F4EE2A 630
|
||||
#0056B8 #0086D6 180
|
||||
#0056B8 #F7E6DE 840
|
||||
#0056B8 #00AE42 270
|
||||
#0056B8 #5E43B7 270
|
||||
#0056B8 #482960 150
|
||||
#0056B8 #FEC600 630
|
||||
#0056B8 #EC008C 450
|
||||
#0056B8 #6F5034 240
|
||||
#0056B8 #FF9016 510
|
||||
#0056B8 #00B1B7 240
|
||||
#0056B8 #BECF00 510
|
||||
#FEC600 #000000 90
|
||||
#FEC600 #FFFFFF 900
|
||||
#FEC600 #545454 390
|
||||
#FEC600 #8E9089 600
|
||||
#FEC600 #C12E1F 180
|
||||
#FEC600 #F4EE2A 150
|
||||
#FEC600 #0086D6 330
|
||||
#FEC600 #F7E6DE 600
|
||||
#FEC600 #00AE42 180
|
||||
#FEC600 #5E43B7 270
|
||||
#FEC600 #482960 330
|
||||
#FEC600 #0056B8 300
|
||||
#FEC600 #EC008C 390
|
||||
#FEC600 #F5547C 570
|
||||
#FEC600 #6F5034 240
|
||||
#FEC600 #FF9016 150
|
||||
#FEC600 #00B1B7 510
|
||||
#FEC600 #BECF00 300
|
||||
#EC008C #000000 90
|
||||
#EC008C #FFFFFF 900
|
||||
#EC008C #545454 240
|
||||
#EC008C #8E9089 270
|
||||
#EC008C #C12E1F 120
|
||||
#EC008C #F4EE2A 360
|
||||
#EC008C #0086D6 270
|
||||
#EC008C #F7E6DE 660
|
||||
#EC008C #00AE42 330
|
||||
#EC008C #5E43B7 270
|
||||
#EC008C #482960 270
|
||||
#EC008C #0056B8 210
|
||||
#EC008C #FEC600 510
|
||||
#EC008C #F5547C 120
|
||||
#EC008C #6F5034 180
|
||||
#EC008C #00B1B7 360
|
||||
#EC008C #BECF00 570
|
||||
#F5547C #000000 90
|
||||
#F5547C #FFFFFF 900
|
||||
#F5547C #545454 180
|
||||
#F5547C #8E9089 180
|
||||
#F5547C #C12E1F 150
|
||||
#F5547C #F4EE2A 270
|
||||
#F5547C #0086D6 270
|
||||
#F5547C #F7E6DE 540
|
||||
#F5547C #00AE42 300
|
||||
#F5547C #5E43B7 210
|
||||
#F5547C #482960 240
|
||||
#F5547C #0056B8 210
|
||||
#F5547C #FEC600 330
|
||||
#F5547C #EC008C 120
|
||||
#F5547C #6F5034 180
|
||||
#F5547C #FF9016 150
|
||||
#F5547C #00B1B7 300
|
||||
#F5547C #BECF00 330
|
||||
#6F5034 #000000 180
|
||||
#6F5034 #FFFFFF 660
|
||||
#6F5034 #545454 180
|
||||
#6F5034 #8E9089 240
|
||||
#6F5034 #C12E1F 240
|
||||
#6F5034 #F4EE2A 390
|
||||
#6F5034 #0086D6 330
|
||||
#6F5034 #F7E6DE 420
|
||||
#6F5034 #00AE42 300
|
||||
#6F5034 #5E43B7 300
|
||||
#6F5034 #482960 180
|
||||
#6F5034 #0056B8 300
|
||||
#6F5034 #FEC600 270
|
||||
#6F5034 #EC008C 210
|
||||
#6F5034 #F5547C 240
|
||||
#6F5034 #FF9016 240
|
||||
#6F5034 #00B1B7 270
|
||||
#6F5034 #BECF00 360
|
||||
#FF9016 #FFFFFF 900
|
||||
#FF9016 #545454 240
|
||||
#FF9016 #8E9089 270
|
||||
#FF9016 #C12E1F 150
|
||||
#FF9016 #F4EE2A 330
|
||||
#FF9016 #0086D6 240
|
||||
#FF9016 #F7E6DE 390
|
||||
#FF9016 #00AE42 240
|
||||
#FF9016 #5E43B7 270
|
||||
#FF9016 #482960 180
|
||||
#FF9016 #0056B8 240
|
||||
#FF9016 #FEC600 210
|
||||
#FF9016 #EC008C 210
|
||||
#FF9016 #F5547C 210
|
||||
#FF9016 #6F5034 180
|
||||
#FF9016 #00B1B7 300
|
||||
#FF9016 #BECF00 270
|
||||
#00B1B7 #000000 210
|
||||
#00B1B7 #FFFFFF 480
|
||||
#00B1B7 #545454 300
|
||||
#00B1B7 #8E9089 180
|
||||
#00B1B7 #C12E1F 300
|
||||
#00B1B7 #F4EE2A 300
|
||||
#00B1B7 #0086D6 150
|
||||
#00B1B7 #F7E6DE 390
|
||||
#00B1B7 #00AE42 120
|
||||
#00B1B7 #5E43B7 270
|
||||
#00B1B7 #482960 270
|
||||
#00B1B7 #0056B8 150
|
||||
#00B1B7 #FEC600 330
|
||||
#00B1B7 #EC008C 270
|
||||
#00B1B7 #F5547C 270
|
||||
#00B1B7 #6F5034 210
|
||||
#00B1B7 #FF9016 270
|
||||
#00B1B7 #BECF00 240
|
||||
#BECF00 #000000 270
|
||||
#BECF00 #FFFFFF 450
|
||||
#BECF00 #545454 270
|
||||
#BECF00 #8E9089 270
|
||||
#BECF00 #C12E1F 150
|
||||
#BECF00 #F4EE2A 90
|
||||
#BECF00 #0086D6 300
|
||||
#BECF00 #F7E6DE 300
|
||||
#BECF00 #00AE42 180
|
||||
#BECF00 #5E43B7 270
|
||||
#BECF00 #482960 210
|
||||
#BECF00 #0056B8 240
|
||||
#BECF00 #FEC600 210
|
||||
#BECF00 #EC008C 240
|
||||
#BECF00 #F5547C 150
|
||||
#BECF00 #6F5034 150
|
||||
#BECF00 #FF9016 150
|
||||
#BECF00 #00B1B7 270
|
||||
61
resources/flush/flush_data_standard.txt
Normal file
@@ -0,0 +1,61 @@
|
||||
colors
|
||||
#000000 #C12E1F #00AE42 #545454 #D1D3D5 #5B6579 #F4EE2A #9D432C #5E43B7 #0A2989 #FF6A13 #8E9089
|
||||
src dst flush
|
||||
#000000 #F4EE2A 450
|
||||
#000000 #5E43B7 330
|
||||
#C12E1F #F4EE2A 420
|
||||
#C12E1F #FF6A13 210
|
||||
#00AE42 #D1D3D5 330
|
||||
#00AE42 #F4EE2A 240
|
||||
#00AE42 #FF6A13 270
|
||||
#545454 #00AE42 180
|
||||
#545454 #D1D3D5 240
|
||||
#545454 #F4EE2A 270
|
||||
#545454 #5E43B7 120
|
||||
#545454 #FF6A13 300
|
||||
#545454 #8E9089 120
|
||||
#D1D3D5 #F4EE2A 120
|
||||
#D1D3D5 #FF6A13 150
|
||||
#5B6579 #C12E1F 120
|
||||
#5B6579 #00AE42 90
|
||||
#5B6579 #D1D3D5 120
|
||||
#5B6579 #F4EE2A 180
|
||||
#5B6579 #9D432C 120
|
||||
#5B6579 #0A2989 90
|
||||
#5B6579 #FF6A13 180
|
||||
#5B6579 #8E9089 90
|
||||
#F4EE2A #000000 120
|
||||
#F4EE2A #C12E1F 90
|
||||
#F4EE2A #00AE42 150
|
||||
#F4EE2A #9D432C 150
|
||||
#F4EE2A #FF6A13 90
|
||||
#9D432C #00AE42 240
|
||||
#9D432C #D1D3D5 300
|
||||
#9D432C #F4EE2A 270
|
||||
#9D432C #FF6A13 180
|
||||
#9D432C #8E9089 210
|
||||
#5E43B7 #00AE42 180
|
||||
#5E43B7 #D1D3D5 270
|
||||
#5E43B7 #F4EE2A 270
|
||||
#5E43B7 #9D432C 150
|
||||
#5E43B7 #FF6A13 270
|
||||
#5E43B7 #8E9089 210
|
||||
#0A2989 #C12E1F 330
|
||||
#0A2989 #00AE42 210
|
||||
#0A2989 #545454 150
|
||||
#0A2989 #D1D3D5 450
|
||||
#0A2989 #5B6579 240
|
||||
#0A2989 #9D432C 270
|
||||
#0A2989 #5E43B7 180
|
||||
#0A2989 #FF6A13 390
|
||||
#0A2989 #8E9089 270
|
||||
#FF6A13 #C12E1F 90
|
||||
#FF6A13 #D1D3D5 210
|
||||
#FF6A13 #F4EE2A 210
|
||||
#FF6A13 #9D432C 120
|
||||
#FF6A13 #8E9089 180
|
||||
#8E9089 #C12E1F 150
|
||||
#8E9089 #00AE42 120
|
||||
#8E9089 #D1D3D5 150
|
||||
#8E9089 #F4EE2A 270
|
||||
#8E9089 #FF6A13 150
|
||||
BIN
resources/fonts/NanumGothic-Bold.ttf
Normal file
BIN
resources/fonts/NanumGothic-Regular.ttf
Normal file
BIN
resources/fonts/SourceHanSansJP-Bold.otf
Normal file
BIN
resources/fonts/SourceHanSansJP-Normal.otf
Normal file
3
resources/images/L.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.77482" cy="7.85898" r="7.70859" fill="#262E30"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 166 B |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 9.8 KiB |
1
resources/images/QIDIStudioBlack.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="11.8100004196167" height="12" viewBox="0 0 11.8100004196167 12"><defs><clipPath id="master_svg0_2688_67072"><rect x="0" y="0" width="11.8100004196167" height="12" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_2688_67072)"><g><path d="M7.15,9.68L7.15,7.13C7.15,6.96,7.24,6.8,7.39,6.72L9.48,5.51L10.44,4.96L10.44,3.41C10.44,3.07,10.26,2.75,9.96,2.58L5.7,0.13C5.4,-0.04,5.04,-0.04,4.74,0.13L0.48,2.59C0.18,2.76,0,3.08,0,3.42L0,8.34C0,8.68,0.18,9,0.48,9.17L4.74,11.63C5.04,11.8,5.4,11.8,5.7,11.63L7.16,10.79L7.16,9.68L7.15,9.68ZM5.69,5.05C5.39,5.22,5.21,5.54,5.21,5.88L5.21,9.97C5.21,10.34,4.81,10.57,4.49,10.38L1.18,8.47C1.03,8.38,0.94,8.23,0.94,8.06L0.94,3.69C0.94,3.52,1.03,3.36,1.18,3.28L4.96,1.1C5.11,1.01,5.29,1.01,5.44,1.1L8.27,2.73C8.59,2.91,8.59,3.37,8.27,3.56L5.68,5.06L5.69,5.05Z" fill="#212322" fill-opacity="1" style="mix-blend-mode:passthrough"/></g><g><path d="M11.090000095367431,4.590000153192139L10.44000009536743,4.970000553192139L10.44000009536743,8.630001553192137C10.44000009536743,8.80000155319214,10.350000095367431,8.950001553192138,10.200000095367432,9.03000155319214L10.150000095367432,9.060001553192139L10.080000095367431,9.10000155319214L9.480000095367432,9.450001553192138L9.090000095367431,9.670001553192138L7.150000095367432,10.790001553192138L7.150000095367432,11.490001553192139L7.150000095367432,11.520001553192138C7.150000095367432,11.880001553192137,7.5300000953674315,12.10000155319214,7.850000095367432,11.94000155319214L7.870000095367431,11.94000155319214L8.250000095367431,11.71000155319214L11.560000095367432,9.790001553192138C11.71000009536743,9.700001553192138,11.800000095367432,9.55000155319214,11.800000095367432,9.380001553192137L11.800000095367432,4.999999553192139C11.800000095367432,4.630000553192139,11.400000095367432,4.400000553192139,11.080000095367431,4.590000153192139L11.090000095367431,4.590000153192139Z" fill="#212322" fill-opacity="1" style="mix-blend-mode:passthrough"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
3
resources/images/R.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.77482" cy="8.025" r="7.70859" fill="#262E30"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 164 B |
1
resources/images/add_copies.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M.5,13.5V3.5a1,1,0,0,1,1-1h10a1,1,0,0,1,1,1v10a1,1,0,0,1-1,1H1.5A1,1,0,0,1,.5,13.5Zm13-1a1,1,0,0,0,1-1V1.5a1,1,0,0,0-1-1H3.5a1,1,0,0,0-1,1m0,7h3m2,0h3m-4,4v-8" style="fill:none;stroke:#949494;stroke-linecap:square;stroke-linejoin:round;opacity:1"/></svg>
|
||||
|
After Width: | Height: | Size: 346 B |
1
resources/images/add_text_modifier.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M6.5,14.5a1,1,0,0,1-1-1v-9h-4a1,1,0,0,1-1-1v-2a1,1,0,0,1,1-1h12a1,1,0,0,1,1,1v2a1,1,0,0,1-1,1h-4v2" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/><line x1="8.5" y1="8.5" x2="14.5" y2="14.5" style="fill:none;stroke:#009688;stroke-linejoin:round"/><line x1="14.5" y1="8.5" x2="8.5" y2="14.5" style="fill:none;stroke:#009688;stroke-linejoin:round"/><line x1="11.5" y1="8.5" x2="11.5" y2="14.5" style="fill:none;stroke:#009688;stroke-linecap:square;stroke-linejoin:round"/><line x1="14.5" y1="11.5" x2="8.5" y2="11.5" style="fill:none;stroke:#009688;stroke-linecap:square;stroke-linejoin:round"/></svg>
|
||||
|
After Width: | Height: | Size: 721 B |
1
resources/images/add_text_negative.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M6.5,14.5a1,1,0,0,1-1-1v-9h-4a1,1,0,0,1-1-1v-2a1,1,0,0,1,1-1h12a1,1,0,0,1,1,1v2a1,1,0,0,1-1,1h-4v2" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/><path d="M15,11.5A3.5,3.5,0,1,1,11.5,8,3.5,3.5,0,0,1,15,11.5ZM14,11H9v1h5Z" style="fill:#009688"/></svg>
|
||||
|
After Width: | Height: | Size: 373 B |
1
resources/images/add_text_part.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M6.5,14.5a1,1,0,0,1-1-1v-9h-4a1,1,0,0,1-1-1v-2a1,1,0,0,1,1-1h12a1,1,0,0,1,1,1v2a1,1,0,0,1-1,1h-4v2" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/><path d="M15,11.5A3.5,3.5,0,1,1,11.5,8,3.5,3.5,0,0,1,15,11.5ZM14,11H12V9H11v2H9v1h2v2h1V12h2Z" style="fill:#009688"/></svg>
|
||||
|
After Width: | Height: | Size: 392 B |