Зона захвата совпадала с нарисованным квадратиком — девять точек на девять. Пока затухание нулевое, ручка стоит в углу клипа и целиться есть куда; стоит её сдвинуть, она висит посреди клипа сама по себе, и попасть в неё почти нельзя. Зона захвата теперь шире нарисованного: по шесть точек в стороны и семь вниз, внутрь клипа, — рука уводит курсор туда, а не выше клипа. Если на узком клипе зоны обеих ручек налезли друг на друга, берётся та, к которой ближе. Заодно над зоной меняется курсор. Раньше над ручкой он был такой же, как над всем клипом, и где она — узнать было нельзя. Проверено протяжкой мыши на невидимом экране (tests/fadegrab.sh): первый захват за угол даёт затухание 1.387 с, второй — с прицелом на пять точек ниже и четыре в стороне от середины ручки — доводит до 2.261 с. На сборке из прошлого коммита второй захват не делает ничего.
67 lines
2.7 KiB
Bash
Executable file
67 lines
2.7 KiB
Bash
Executable file
#!/bin/sh
|
||
# Повторный захват рампы затухания.
|
||
#
|
||
# Первый раз ручка стоит в правом верхнем углу клипа — целиться есть куда.
|
||
# Второй раз она висит посреди клипа сама по себе, и целятся в неё на
|
||
# глаз: чуть ниже и чуть в стороне от середины. Оба захвата обязаны
|
||
# сработать.
|
||
# Запуск (редактор должен собираться в этом дереве, экран :99 поднят):
|
||
# tests/fadegrab.sh [<путь к nlve>]
|
||
BIN=${1:-$PWD/nlve}
|
||
cd "$(dirname "$0")/.."
|
||
BIN=${1:-$PWD/nlve}
|
||
PROJ=$PWD/test/поток/рампа.nlve
|
||
# Монтаж для проверки: два клипа без затуханий. В репозиторий не входит —
|
||
# ссылается на съёмку, которой здесь нет.
|
||
[ -f test/поток/пара.nlve ] || { echo "нет монтажа test/поток/пара.nlve"; exit 2; }
|
||
cp test/поток/пара.nlve "$PROJ"
|
||
for p in $(pgrep -x nlve); do
|
||
tr '\0' '\n' < /proc/$p/environ 2>/dev/null | grep -qx "DISPLAY=:99" && kill $p
|
||
done
|
||
sleep 1
|
||
rm -rf test/поток/профиль-рампа; mkdir -p test/поток/профиль-рампа
|
||
rm -f test/поток/*.autosave
|
||
SP=$PWD/test/поток/профиль-рампа
|
||
XDG_CONFIG_HOME=$SP XDG_CACHE_HOME=$SP XDG_DATA_HOME=$SP DISPLAY=:99 \
|
||
setsid "$BIN" "$PROJ" >/dev/null 2>&1 < /dev/null &
|
||
sleep 14
|
||
X="timeout 8 env DISPLAY=:99 xdotool"
|
||
$X windowmove 2097206 0 0 windowsize 2097206 1500 860 2>/dev/null
|
||
sleep 2
|
||
|
||
fade() {
|
||
$X key ctrl+s
|
||
sleep 2
|
||
python3 -c "
|
||
import json
|
||
d=json.load(open('$PROJ'))
|
||
for t in d['tracks']:
|
||
for c in t['clips']:
|
||
if c['kind']=='video' and c['tl_start']<0.001:
|
||
print('%.3f' % c.get('fade_out',0)); raise SystemExit
|
||
print('нет клипа')
|
||
"
|
||
}
|
||
|
||
echo " затухание до правок: $(fade) с"
|
||
$X mousemove 783 490 mousedown 1; sleep 0.3
|
||
$X mousemove 745 490; sleep 0.2; $X mousemove 720 490; sleep 0.2
|
||
$X mouseup 1; sleep 1.5
|
||
A=$(fade)
|
||
echo " после первого захвата (ручка в углу): $A с"
|
||
|
||
$X mousemove 724 495 mousedown 1; sleep 0.3
|
||
$X mousemove 700 495; sleep 0.2; $X mousemove 680 495; sleep 0.2
|
||
$X mouseup 1; sleep 1.5
|
||
B=$(fade)
|
||
echo " после второго захвата (ручка посреди клипа, мимо центра): $B с"
|
||
|
||
python3 -c "
|
||
a, b = $A, $B
|
||
if a <= 0.01:
|
||
print(' ПЛОХО: не сработал даже первый захват')
|
||
elif b <= a + 0.01:
|
||
print(' ПЛОХО: второй захват не сработал')
|
||
else:
|
||
print(' ok: обе протяжки сработали')
|
||
"
|