QGIS/scripts/astyle.sh
Vincent Cloarec 27a70eab7c
[FEATURE] mesh simplification (#34532)
[FEATURE] fix #31575 mesh layer speed rendering improvements (LOD)

As mesh layer could have millions of triangles, rendering could be very slow, especially when all the triangles are displayed in the view whereas triangles are too small to be viewed.

For those situations QGIS has an option to simplify the mesh. Simplification leads to one or more simplified mesh that represents levels of detail (LOD). When rendering the mesh, the appropriate level of detail is chosen to have an adequate rendering depending on the view.
2020-02-25 08:05:49 +01:00

158 lines
4.2 KiB
Bash
Executable File

#!/usr/bin/env bash
###########################################################################
# astyle.sh
# ---------------------
# Date : August 2008
# Copyright : (C) 2008 by Juergen E. Fischer
# Email : jef at norbit dot de
###########################################################################
# #
# This program is free software; you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation; either version 2 of the License, or #
# (at your option) any later version. #
# #
###########################################################################
# sort by version option
SV=V
if [[ "$OSTYPE" =~ darwin* ]]; then
SV=n
fi
min_version="3"
astyle_version_check() {
[ $(printf "$($1 --version 2>&1 | cut -d ' ' -f4)\\n$min_version" | sort -${SV} | head -n1) = "$min_version" ]
}
for ASTYLE in ${QGISSTYLE} $(dirname "$0")/qgisstyle $(dirname "$0")/RelWithDebInfo/qgisstyle astyle
do
if type -p "$ASTYLE" >/dev/null; then
if astyle_version_check "$ASTYLE"; then
break
fi
fi
ASTYLE=
done
if [ -z "$ASTYLE" ]; then
echo "qgisstyle / astyle not found - please install astyle >= $min_version or enable WITH_ASTYLE in cmake and build" >&2
exit 1
fi
if type -p tput >/dev/null; then
elcr="$ASTYLEPROGRESS$(tput el)$(tput cr)"
else
elcr="$ASTYLEPROGRESS \\r"
fi
if ! type -p flip >/dev/null; then
if type -p dos2unix >/dev/null; then
flip() {
dos2unix -q -k "$2"
}
else
echo "flip not found" >&2
echo "Try:"
if [[ -f /etc/fedora-release ]]; then
echo " dnf install dos2unix";
elif [[ -f /etc/debian_version ]]; then
echo " apt install flip";
else
echo " installing flip or dos2unix from your package manager";
fi
flip() {
:
}
fi
fi
if ! type -p autopep8 >/dev/null; then
echo "autopep8 not found" >&2
echo "Try:"
if [[ -f /etc/fedora-release ]]; then
echo " dnf install python3-autopep8";
elif [[ -f /etc/debian_version ]]; then
echo " apt install python3-autopep8";
else
echo " installing python3-autopep8 from your package manager";
fi
autopep8() {
:
}
fi
ASTYLEOPTS=$(dirname "$0")/astyle.options
if type -p cygpath >/dev/null; then
ASTYLEOPTS="$(cygpath -w "$ASTYLEOPTS")"
fi
if type -p wslpath >/dev/null; then
ASTYLEOPTS="$(wslpath -a -w "$ASTYLEOPTS")"
fi
set -e
astyleit() {
$ASTYLE --options="$ASTYLEOPTS" "$1"
modified=$1.unify_includes_modified
cp "$1" "$modified"
perl -i.sortinc -n scripts/unify_includes.pl "$modified"
scripts/doxygen_space.pl "$modified"
diff "$1" "$modified" >/dev/null || mv "$modified" "$1"
rm -f "$modified"
}
for f in "$@"; do
case "$f" in
src/plugins/grass/qtermwidget/*|external/o2/*|external/qt-unix-signals/*|external/rtree/*|external/astyle/*|external/kdbush/*|external/poly2tri/*|external/wintoast/*|external/qt3dextra-headers/*|external/meshOptimizer/*|python/ext-libs/*|ui_*.py|*.astyle|tests/testdata/*|editors/*)
echo -ne "$f skipped $elcr"
continue
;;
*.cpp|*.h|*.c|*.cxx|*.hxx|*.c++|*.h++|*.cc|*.hh|*.C|*.H|*.hpp|*.mm)
if [ -x "$f" ]; then
chmod a-x "$f"
fi
cmd=astyleit
;;
*.ui|*.qgm|*.txt|*.t2t|resources/context_help/*)
cmd=:
;;
*.py)
#cmd="autopep8 --in-place --ignore=E111,E128,E201,E202,E203,E211,E221,E222,E225,E226,E227,E231,E241,E261,E265,E272,E302,E303,E501,E701"
echo -ne "Formatting $f $elcr"
cmd="autopep8 --in-place --ignore=E261,E265,E402,E501"
;;
*.sip)
cmd="perl -i.prepare -pe 's/[\\r\\t ]+$//; s#^(\\s*)/\\*[*!]\\s*([^\\s*].*)\\s*\$#\$1/** \\u\$2\\n#;'"
;;
*)
echo -ne "$f skipped $elcr"
continue
;;
esac
if ! [ -f "$f" ]; then
echo "$f not found" >&2
continue
fi
if [[ -f $f && $(head -c 3 "$f") == $'\xef\xbb\xbf' ]]; then
mv "$f" "$f".bom
tail -c +4 "$f".bom > "$f"
echo "removed BOM from $f"
fi
modified=$f.flip_modified
cp "$f" "$modified"
flip -ub "$modified"
diff "$f" "$modified" >/dev/null || mv "$modified" "$f"
rm -f "$modified"
eval "$cmd '$f'"
done