nlve/tests/fadegrab.sh
4aiman e8cb3cc392 Ручку затухания можно взять и во второй раз
Зона захвата совпадала с нарисованным квадратиком — девять точек на
девять. Пока затухание нулевое, ручка стоит в углу клипа и целиться есть
куда; стоит её сдвинуть, она висит посреди клипа сама по себе, и попасть
в неё почти нельзя.

Зона захвата теперь шире нарисованного: по шесть точек в стороны и семь
вниз, внутрь клипа, — рука уводит курсор туда, а не выше клипа. Если на
узком клипе зоны обеих ручек налезли друг на друга, берётся та, к которой
ближе.

Заодно над зоной меняется курсор. Раньше над ручкой он был такой же, как
над всем клипом, и где она — узнать было нельзя.

Проверено протяжкой мыши на невидимом экране (tests/fadegrab.sh): первый
захват за угол даёт затухание 1.387 с, второй — с прицелом на пять точек
ниже и четыре в стороне от середины ручки — доводит до 2.261 с. На сборке
из прошлого коммита второй захват не делает ничего.
2026-10-01 16:13:37 +03:00

67 lines
2.7 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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: обе протяжки сработали')
"