среда, октября 28, 2009

Inkscape: спасение заглюченного файла

Сабжевая программа не отличается особой стабильностью при использовании фильтров эффектов и контурных фильтров, но вчера впервые поимел с этим реальный головняк.

После сегфолта все попытки открыть сохранённый прежде файл (бог уж с ними, с несохранёнными изменениями) приводили только к новым сегфолтам.

Перспектива потерять двухчасовой труд настолько расстроила, что решил, что утро вечера мудренее.

За ночь сообразил открыть SVG в текстовом файле и ручками почекрыжить фильтры эффектов, на которые грешил.

Почекрыжил, не помогло.

Нашёл и удалил ноды path, к которым применялись эффекты. После этого рисунок открылся. Потеряна пара контуров, но это мелочи жизни.

Думаю, контуры не виноваты. Всё-таки грешу на фильтры эффектов:

1) к контурам применял эффект деформации по обтекающей, который в общем работал, но как-то нелогично, и только нелогичными же способами удалось получить желаемую деформацию;

2) сегфолтнуло при применении фильтра Фаска - Сверкающий металл с последующей правкой параметров фильтра.

В общем, всевозможные фильтры по-прежнему зыбкая почва. Одно радует: случись это с какой-нибудь корелдрой, запорченный файл было бы уже не спасти. Всё-таки открытый (и читабельный!) формат — огромное благо.

Update. Сегодня продолжил работу с файлом и повторил ситуацию в точности. Сегфолт произошёл при попытке скопировать контур с эффектом деформации по обтекающей. Судя по всему, автоматически сохраняя рисунок перед падением, Инкскейп записывает его в состоянии, вызывающем при последующем открытии немедленный сегфолт. Очень удобная фича, чтобы надёжно убить работу :-) Надо порыть настройки, вдруг на это можно как-то повлиять.

Update2.

Program received signal SIGSEGV, Segmentation fault.
0x082d1443 in Inkscape::LivePathEffect::LPEEnvelope::doEffect_pwd2 (
this=0xb255c28, pwd2_in=...) at live_effects/lpe-envelope.cpp:122
122 live_effects/lpe-envelope.cpp: Нет такого файла или каталога.
in live_effects/lpe-envelope.cpp

Всё-таки это операции над контурами.

Update 3.

На этот раз удалось открыть файл в том виде, как он был сохранён (или автосохранён?). Перед этим в текстовом редакторе выбросил из файла SVG все ноды inkscape:path-effect и inkscape:perspective. Как ни странно, трансформации при этом сохранились. Заодно нашёл в домашнем каталоге файл аварийного автосохранения (естественно, вызывающий сегфолт). Получается, при сегфолте Инкскейп испортил рабочий файл, что в уме не укладывается.

Комментариев нет:

Поиск по этому блогу