Два месяца назад мы уже писали о новом проекте libcdr, в рамках которого разрабатывается библиотека для чтения файлов Corel DRAW и конвертер в SVG. Пора рассказать о том, что было сделано за это время.
Проект продолжает активно развиваться. За истекшие два месяца было внесено множество изменений, реализующих поддержку самых разных возможностей формата. С форматов и начнём.
Форматы файлов
В середине марта компания Corel выпустила новую версию своего флагманского приложения Corel DRAW и в очередной раз поменяла формат хранения данных. Объединённой команде LibreOffice/re-lab понадобилась неделя, чтобы заметить релиз, и всего несколько дней, чтобы разобраться с изменениями и реализовать минимальную поддержку формата в libcdr.
В библиотеке также появилась поддержка формата v6, так что диапазон поддерживаемых версий теперь простирается от 6 до 16, что, вообще говоря, для третьестороннего софта — практически уникальное явление. Добавлен и кое-какой код для чтения файлов CMX, в которых часто распространяется клипарт Corel.
Объекты
В libcdr 0.0.6 появилось чтение размера страницы, спецобъектов, многоугольников, B-сплайнов и внедрённого растра. Кроме того, было исправлено чтение закруглённых прямоугольников и вертикального порядка объектов.
Свойства
Улучшенная поддержка пунктира, стилей и типов линий, а также исправленная имитация волосных линий — это всё замечательно и полезно, но не так интересно как некоторые другие изменения.
Прежде всего, в библиотека появилась начальная поддержка градиентов. Она пока что не идеальна: иногда это попадание в точку, иногда ручки градиентов смещаются, приводя к изменению внешнего вида заливки. Имеющиеся недочёты будут исправлены. Просто для иллюстрации приведём небольшой пример. Вот оригинал в CDR:
Вот сконвертированный файл SVG, открытый в Inkscape:
Новая версия также читает цвета, записанные в моделях HSB, LAB и HLS, плюс цвета палитр HKS. Кроме того, Фридрих проконсультировался с Марти Марией и реализовал начальную поддержку цветоуправляемого преобразования из CMYK в RGB посредством LittleCMS v2, а буквально в пятницу появилась первая версия кода для чтения цветовых профилей, встраиваемых в файлы CDR.
Библиотека также научилась читать узорные и текстурные заливки, понимая при этом параметр растяжения текстур.
Иными словами, по качеству поддержки формата CDR библиотека libcdr превосходит публично доступную версию UniConvertor, хотя всё ещё не читает группировку объектов. В блоге Фридриха есть картинки Corel DRAW и SVG, которые любой желающий может сравнить с официальным результатом UniConvertor.
Сборка libcdr
Повторимся: для тестирования libcdr крайне желательно работать с версией из репозитория Git. Получаем:
$ git clone git://anongit.freedesktop.org/libreoffice/libcdr
Собираем:
$ ./autogen.sh && ./configure && make && sudo make install
Используем:
$ cdr2xhtml file.cdr > file.xhtml
Полученный файл XHTML открываем в текстовом редакторе, удаляем начало и хвост файла, относящиеся к XHTML. Результат открываем в Inkscape.
Что дальше
По всей очевидности, следующей по порядку будет поддержка текста. Предварительный разбор этой части формата командой re-lab уже выполнен.
Библиотека libcdr будет использоваться в LibreOffice 3.6.
Оставить комментарий