Gsoc2018 підтримка файлів visio в libreoffice - мультимедіа в linux

Успадковані формати файлів - страшне зло. Вірте мені: якщо на двійковий формат файлів немає специфікації, десять до одного, що в ньому одні сумнівні рішення сидять на інших і поганяють третіми, і все - в кращому випадку, заради зворотної сумісності.

Навіщо ж їх тоді підтримувати? Просто бізнес не любить апгрейди. У дизайнерів зазвичай завали клипарта в самих різних форматах, великі видавничі будинки досі сидять на DOC і навіть не думають переходити на DOCX, а системні інтегратори раз у раз відправляють клієнтам схеми в VSD замість VDX.

І якщо DOC давним-давно вивчений вздовж і впоперек, то з Visio проблема полягає в тому, що Microsoft ніколи і нічого толком не публікували про формат файлів VSD. Для того, щоб його зняти чари, потрібні зовсім по-особливому влаштовані мізки, власник яких готовий з радістю витрачати купу часу на те, що навіть закінченим «ботаніків» здається неймовірно нудною роботою. Абсолютна більшість розробників швидше застрелиться, ніж візьметься за реверс-інжиніринг, і їх можна зрозуміти.

Будучи учасником команди re-lab. маленької і скромною як тисяча кривавих диктаторів, я, звісно ж, упереджений у виборі об'єктів для нового інтерв'ю. Але раз співтовариство досить позитивно відгукнулося про перші результати роботи з реалізації підтримки документів Visio в LibreOffice, так тому і бути.

Ейлід. Мені 24 роки, у мене ступінь бакалавра з обчислювальних систем від Абертейского університету, Шотландія, де я зараз працюю над докторською, намагаючись зрозуміти, як можна перенести стійкість біологічних мереж на комп'ютерні мережі, щоб вирішити критичні інфраструктурні проблеми. На IRC мене можна знайти під ніком Tibby Lickle.

Фрідріх. Мені 42 роки, і я працюю в Attachmate / SUSE (раніше частина Novell) над LibreOffice. У мене дружина і троє дітей, який якось дуже вже швидко ростуть. Ще у мене ступінь магістра по теорії обчислювальних машин і систем від словацького університету, про який ви все одно ніколи не чули (University of Zilina), ступінь бакалавра з міжнародних відносин від Женевського університету та ступінь магістра з міжнародного права від Інституту міжнародних досліджень у Женеві.

Фрідріх, як довго ти працюєш над OpenOffice.org/LibreOffice і на чому спеціалізуєшся?

Зараз я працюю в команді, яка відповідає за QA релізів. Що стосується особистих переваг, мені найбільше подобається працювати над фільтрами імпорту, будь це текстові або графічні формати.

Ейлід, для тебе це перший досвід роботи над проектом з відкритим вихідним кодом?

Чому ти обрала саме цей проект?

Ейлід. Я просто запитала на IRC про цікаві ідеї потенційних проектів, і серед згаданих вибрала цей, оскільки ніколи не займалася реверс-інжинірингом. По правді кажучи, до того моменту я навіть не знала, що таке Visio. Не думаю, що можу тепер малювати красиві діаграми, але відчуття таке, що програму я при цьому знаю від і до.

Зараз, коли проект GSoC завершений, наскільки добре працює імпорт VSD в LibreOffice?

Фрідріх. Без тіні удаваної скромності - чертовски добре. Підтримуються всі геометричні примітиви і майже всі типи заливки; є початкова підтримка тексту. Зрозуміло, мова не йде про ідеальну підтримку формату - ми ж все-таки про софт говоримо. Але розуміються всі можливості формату Visio, які можна легко спроектувати на SVG і ODG.

Gsoc2011 підтримка файлів visio в libreoffice - мультимедіа в linux

Gsoc2011 підтримка файлів visio в libreoffice - мультимедіа в linux

Ейлід. В принципі, Фрідріх досить точно відповів на питання. Ми зробили набагато більше ніж припускали зробити на початку. Підтримка NURBS (яких немає в SVG і ODG) і стилів зі стенсіламі - в якомусь сенсі, навіть предмет гордості. Але найкраще судити про результат можуть, звичайно, тільки користувачі.

Ейлід, що для тебе було найскладнішим у проекті?

Ти знаєш, він був в принципі непростим, з самих різних точок зору. Наприклад, структурувати великий проект і працювати з іншими програмістами (і не тільки ними) було для мене в новинку. На щастя, у мене був відмінний керівник, який прекрасно в цьому розбирається :)

Який цінний досвід ти набула за час роботи?

У мене таке відчуття, що я дізналася більше ніж за весь час навчання в університеті! Як працювати з віддаленої командою (ключовий навик - комунікація, що в рівній мірі відноситься і до роботи з локальною командою), наскільки перфекціонізм може заважати роботі і як важливо вчасно демонструвати результати. Ще я дізналася про різні погляди на структуру проекту. О, і ще я тепер знаю, наскільки критично важливі GDB і Valgrind.

Ти плануєш брати участь в розробці LibreOffice понад проекту GSoC?

Ейлід. Моя участь в проекті почалося з бажання віддячити таким чином спільнота, і бажання це нікуди не поділося. Хоча у мене попереду ще захист докторської, libvisio став для мене улюбленим проектом. Я вклала в нього занадто багато сил, щоб ось так просто від нього відмовитися. Спільнота LibreOffice складається з прекрасних людей, і я хотіла б і далі бути його частиною.

У VSD залишаються деякі можливості, які ні до чого прив'язати в LibreOffice. Наприклад, в LibreOffice немає палітри стенсілов. Навряд чи має сенс дописувати нові функції тільки заради того, щоб забезпечити максимальну підтримку VSD, але чи є щось в будь-якому випадку гідне реалізації?

Фрідріх. Чисто технічно це виглядає як скидання вмісту СТЕНС в багатосторінковий файл ODG, по стенсілу на сторінку. Якщо хто-небудь захоче написати реалізує це патч, ми його, звичайно ж, приймемо (за умови, що він толково підготовлений). Просто пам'ятайте, що ми забезпечуємо підтримку Visio, а не намагаємося його заново написати під виглядом LibreOffice Draw.

Фрідріх, чи є у команди LibreOffice плани по реалізації експорту в VSD?

У LibreOffice ми менше займаємося планами і більше - патчами. Поки що я не чув про бажаючих реалізувати експорт файлів Visio. Я навіть не впевнений в тому, що це так уже й важливо. Але якщо комусь захочеться це зробити, не бачу причини для заперечень.

Проте, я б хотів в першу чергу звернути увагу на необхідність реалізувати підтримку VDX і завершити вже розпочату роботу над імпортіровщіком VSD, оскільки те, що не можна імпортувати, не можна і експортувати. Чим більше можливостей формату LO підтримує при імпорті, тим менше він втрачає при зворотному збереженні.

З досвіду знаю, що користувачі схильні чекати від софта підтримки максимальної кількості чужих форматів. При цьому розробники СПО схильні замість цього відсилати всіх до стандартів на кшталт OpenDocument. Як ви вирішуєте це конфлікт в проекті LibreOffice?

Фрідріх. Не думаю, що у нас ця проблема присутня в явному вигляді. Підтримка екзотичних форматів в LibreOffice є однією з досить пріоритетних завдань.

Факти, просто факти

Gsoc2011 підтримка файлів visio в libreoffice - мультимедіа в linux

Gsoc2011 підтримка файлів visio в libreoffice - мультимедіа в linux

У проекті зараз приблизно 6500 рядків коду на C ++, не рахуючи коду складальної середовища.

Gsoc2011 підтримка файлів visio в libreoffice - мультимедіа в linux

До складу бібліотеки libvisio входить утиліта vsd2xhtml. яка вбудовує SVG в XHTML. Утиліта vsd2odg входить до складу пакету writerperfect. LibreOffice з Git просто відкриває VSD.

  • всі геометричні примітиви і команди, включаючи MoveTo, LineTo, PolylineTo, ArcTo, EllipticalArcTo, Ellipse, NURBSTo;
  • заливки (суцільні, градієнтні, прозорі), обведення і стилі обведень (не без проблем);
  • читання формату і орієнтації сторінок, багатосторінкові діаграми;
  • текст, включаючи базову форматування (кегль шрифту, напівжирне і курсивне / похиле накреслення);
  • перетворення на кшталт обертання і дзеркального відображення (працює і для груп);
  • групи об'єктів;
  • вбудований растр.

LibreOffice в принципі не підтримував такий геометричний примітив як еліптичні дуги, типові для стенсілов Visio. Команді довелося реалізувати апроксимацію цих дуг в чотири кубічних сплайна. Функція буде доступна користувачам LibreOffice 3.5; користувачів vsd2odg і LibreOffice 3.3-3.4 чекає малоприємний сюрприз.

Якщо вам не позичати хоробрості, ви можете зібрати написані конвертери для особистого користування.

1. Скачайте, зберіть і встановіть libwpd:

2. Скачайте, зберіть і встановіть libwpg:

3. Скачайте, зберіть і встановіть libvisio:

4. Скачайте, зберіть і встановіть writerperfect:

Пуристи можуть посваритися на аргумент --prefix = / usr і на make install замість make checkinstall. Особисто мене все влаштовує.

Конвертація VSD в XHTML і SVG

Як уже було згадано трохи вище, до складу пакету libvisio входить утиліта vsd2xhtml, яка конвертує VSD в SVG і вставляє їх в документи XHTML. Ось схема мережі, конвертувати і відкритої в Inkscape:

Gsoc2011 підтримка файлів visio в libreoffice - мультимедіа в linux

Якщо Inkscape вам всяко миліше LibreOffice Draw, редакція лінуксграфікса не без збоченого задоволення ділиться з вами описом ритуальних танців.

Шматки SVG починаються цим:

... і передбачувано закінчуються цим:

Редакція лінуксграфікса має сміливість сподіватися, що рано чи пізно в Inkscape з'явиться імпортіровщік VSD. А до тих пір ретельно священнодійства урізноманітнюють ваше життя і доставлять чимало щирої радості вашим близьким.

На закінчення

Погоджуся з Фрідріхом: геть удавану скромність. Робота виконана дійсно чимала. Можливості VSD охоплені не на 100% і швидше за все не будуть коли-небудь повністю охоплені. Проте, про очевидні помилки завжди варто писати в трекер. прикріплюючи до звітів проблемні файли. Про них подбають.

Локалізація пакета 3D-моделювання Blender відновлено