LibreOffice 4.x.x - тормоза с SVG

Автор greenman, 15 марта 2013, 06:37

0 Пользователи и 1 гость просматривают эту тему.

frob

Цитата: ape от 15 марта 2013, 19:24перевода UI_LO на GTK_3. Может быть, причина в этом.
Переводятся различные диалоги, на скорость отрисовки файла это влиять не должно вообще.
(Более того, что-то мне подсказывает, что cairo будет работать быстрее чем LO-шное двигло).

Я не очень понял "схему" смены форматов. Если файл содержащий SVG (сохранён в 3.6.5) пересохранить из 4.0.1.2, то сохраняется SVG+PNG?
Зачем временно генерировать PNG -- более-менее понятно: растрируем SVG, прикапываем результат, при необходимости отрисовки используем ранее прикопаное (хотя LO вроде в таких случаях пытается свой собственный SVM использовать, да и кэшировать можно было бы просто растр). Сохранять же этот временный PNG в файл смысла нет.

Для масштабирования растра вроде прикрутили Ланцоша, как это влияет на умедление не знаю.

Лениво тащить-распаковывать... скажите, градиенты в этих SVG есть?

greenman

#16
Цитата: frob от 16 марта 2013, 08:40Я не очень понял "схему" смены форматов. Если файл содержащий SVG (сохранён в 3.6.5) пересохранить из 4.0.1.2, то сохраняется SVG+PNG?
Именно так. Насколько я понял (не уверен, что правильно) из написанного здесь - из-за того, что в исходном файле рисунки были дублированы. А если уже получившийся файл пересохранить в 3.6.5, то остаётся только png.

Вот эти картинки:

http://openclipart.org/detail/3024/balloon-border-by-revans2
http://openclipart.org/detail/5595/birthday-cake-by-dstankie

На второй точно виден градиент.

frob

Цитата: greenman от 16 марта 2013, 08:53На второй точно виден градиент.
И не только виден, но и в тексте есть...

Возможно в этом проблема. С поддержкой градиентов всё было туго, над этим работали. Неисключено, что наблюдаются результаты этой работы.
Я б на Вашем месте баг в багзилле открыл бы.

greenman

#18
Цитата: frob от 16 марта 2013, 09:11Я б на Вашем месте баг в багзилле открыл бы.
О тормозах? Или о образовании png+svg?

Попробовал открыл priglas_365 в LibreDraw 4.0.1.2, удалил все рисунки, кроме одного (balloon-border-by-revans2) и одного текстового поля. Сохранил. Внутри опять svg+png, и тормоза при открытии.

То же самое, но оставил только birthday-cake-by-dstankie. Внутри опять svg+png, тормоза при открытии заметно меньше.
Что, впрочем, объяснимо с точки зрения размера svg:
dstankie_Birthday_cake.svg 199669
revans2_Balloon_Border.svg 554374


Создал файл с нуля в LibreDraw 4.0.1.2, вставил dstankie_Birthday_cake.svg. Внутри опять svg+png, тормоза при открытии примерно как в предыдущем случае..

Т.е. svg+png - это не бага, это фича?

https://bugs.freedesktop.org/show_bug.cgi?id=61549 --  в файле приложенном для этого бага внутри тоже svg+png. Но, видимо, при сохранении что-то глючит, и файлов svg меньше. М.б. поэтому валится при открытии...

ape

#19
Цитата: frob от 16 марта 2013, 09:40
Я не очень понял "схему" смены форматов. Если файл содержащий SVG (сохранён в 3.6.5) пересохранить из 4.0.1.2, то сохраняется SVG+PNG?
Как работает 3.6.5 не знаю (ну нет её пока у меня). В 4.х.х происходит следующее:
1. Если в новый ODG "Insert > Picture > From_file : ***.svg", то в
- new.odg/Picturies/.. присутствуют как ***.svg, так и растровый импортный PNG c непонятным DPI;
- new.odg/content.xml содержит ссылки на ОБА объекта
Цитировать- <office:body>
- <office:drawing>
- <draw:page draw:name="page1" draw:style-name="dp1" draw:master-page-name="Default">
- <draw:frame draw:style-name="gr1" draw:text-style-name="P1" draw:layer="layout" svg:width="116.899cm" svg:height="25.199cm" svg:x="1cm" svg:y="30.615cm">
 <draw:image xlink:href="Pictures/10000201000005F3000001484CF701B4.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" />
- <draw:image xlink:href="Pictures/101D738500022ADA0000779DACC7D2B8.svg" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
 <text:p />
 </draw:image>
 </draw:frame>
 </draw:page>
 </office:drawing>
 </office:body>
2. Если использовать "File > Open : ***.svg", то запустится Draw, который и откроет (отрисует) файл несколько иначе, и сохранит SVG_open.odg без создания в нём папки Pictures.
--
Чтобы убедиться в "качестве" можно в Inkscape посмотреть на исходный SVG, который есть в Novak_410_insert.odg/Picturies/..
Это и есть тестовый файл (~1,83 MB) Кристофа, по которому оцениваю SVG-успехи офисных пакетов и GIMPа.



[вложение удалено Администратором]

ape

#20
Цитата: greenman от 15 марта 2013, 08:33priglas_365.odg -- фактически он и есть. Я создал файл в LibreDraw 3.6.5 "с нуля", вставив в него svg картинки (на всякий случай - картинки с openclipart.org).
Действительно, LO-4.x.x при пересохранении файла под другим именем добавляет растровые изображения в PMG-формате вставленных SVG-файлов в file.odg/Pictures/.. При этом в content.xml вставка рисунка
Цитировать<draw:frame draw:style-name="gr1" draw:text-style-name="P1" draw:layer="layout" svg:width="8cm" svg:height="10.35cm" svg:x="11.5cm" svg:y="2.15cm">
- <draw:image xlink:href="Pictures/200000010000545600006D24A7271475.svg" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
 <text:p />
 </draw:image>
 </draw:frame>
приобретает такой вид
Цитировать<draw:frame draw:style-name="gr1" draw:text-style-name="P1" draw:layer="layout" svg:width="8cm" svg:height="10.35cm" svg:x="11.5cm" svg:y="2.15cm">
 <draw:image xlink:href="Pictures/100002010000026E00000324983C42CB.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" />
- <draw:image xlink:href="Pictures/200000010000545600006D24A7271475.svg" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
 <text:p />
 </draw:image>
 </draw:frame>
При этом, LibreDraw_4.x.x определяет и устанавливает DPI создаваемому PNG-файлу так, чтобы его размер был равен размеру вставленного SVG-файла (не исходному размеру изображения - !).
Т.о. можно говорить о регрессивной ошибке - создании дублирующего PNG-изображения, которое вставляется поверх {-??} вставленного SVG-рисунка.
@frob: Ваше мнение?

greenman

#21
Цитата: ape от 16 марта 2013, 10:39Как работает 3.6.5 не знаю (ну нет её пока у меня). В 4.х.х происходит следующее:
1. Если в новый ODG "Insert > Picture > From_file : ***.svg", то в

Вставил картинку  в 3.6.5, отличий от Inkscape не заметил (м.б. плохо искал). На всякий случай кроме скриншота выложу и файл odg, хотя это вряд ли что даст.

Если открыть svg как файл - да, отличия существенные.



[вложение удалено Администратором]

ape

#22
Цитата: greenman от 16 марта 2013, 12:18Вставил картинку  в 3.6.5, отличий от Inkscape не заметил (м.б. плохо искал)
Этого достаточно, т.к. нет только части текста (выше и ниже таблицы). Радует то, что от ОС это не зависит (у Вас, имхо, DEB-пакет).
--
Буду ставить 3.6.5, чтобы попробовать отписаться по НОВОМУ (отметку "дублирующий" могут и разрабы поставить) регресивному багу. Регрессия возможно позволит:
либо статус поднять до "критическая", но я делал это уже несколько раз, поэтому мой статус не поможет  :'(
либо просить frob обратить на ошибку чьё-нибудь внимание.

greenman

#23
Цитата: ape от 16 марта 2013, 12:40нет только части текста (выше и ниже таблицы)
Протупил, что этот текст - тоже часть svg.

Цитата: ape от 16 марта 2013, 12:40(у Вас, имхо, DEB-пакет)
Выше я приводил - Версия 3.6.5.2 (ID сборки: 3.6.5.2 Arch Linux build-1). В арче маинтейнеры сами собирают пакет из исходников.

ape

#24
LOdev-4.1.0.0+ отрисовывает вставленный SVG значительно хуже, чем Ваша версия. Да и текст, например, теперь не текст вовсе, а часть картинки. Регрессия в полный рост  :roll:

[вложение удалено Администратором]

ape

Качество импорта SVG у 3.6.5 и 4.1.0 (Файл - Открыть: file.svg) одинаковое.

[вложение удалено Администратором]

ape

#26
@frob: не найдётся ли у Вас немного времени взглянуть на мой "рашн-инглиш"?
ЦитироватьThe loss of image quality if picture inserted as the SVG file.
LibreOffice-4.x.x does inserts SVG files with lower quality than it does by LibreOffice-3.6.5. Look at the picture that is in the attached archive. You can see that LibreOffice-3.6.5 does this job perfectly.
But LibreOffice-4.x.x creates ODG file that different from ODG file produced by LibreOffice-3.6.5.
1. In the folder "***.ods/Pictures/.." creates additional bitmap file of a PNG format. LibreDraw-4.x.x assigns the image's resolution (DPI) that image so that when printed on a display the size of a PNG image was equal to the size of the Insert (SVG). The SVG file's text is converted to a part of the PNG image.
2. Content.xml file contains 2 links to images that need to be put in the same place of the ODG file. 1st link points to a PNG image. 2nd link points to a SVG file.
This is a regression LibreOffice-4.x.x.
The SVG file can be extracted from any ODG files from the attached archive. The picture is taken from the official website of The Community.
В архив складываю: Novak_365_insert.odg; Novak_410_insert.odg и этот скриншот.
Нашёл одно отличие в 3.6.5 (Linux vs Windows): в Win_OS игнорируется шрифт (Вегур, установлен).


[вложение удалено Администратором]

frob

Цитата: ape от 16 марта 2013, 17:31
@frob: не найдётся ли у Вас немного времени взглянуть на мой "рашн-инглиш"?
Цитировать

Очень как-то всё сложно и путанно.
Предлагаю для начала сделать просто и по-русски.
Насколько я понимаю, сделать надо следующее:
1. Создать в 3.6.5 документ, вставить прилагаемый SVG.
2. Сохранить.
3. Распаковать ODF, проверить, что внутри только SVG.
4. Открыть этот документ в 4.0.x, пересохранить.
5. Распаковать и убедиться, что там теперь и SVG и PNG.

Приложить к багу: SVG, документ сохранённый из 3.6.5 и документ пересохранённый из 4.0.x.

Правильно?

greenman

#28
Пункт 4 не обязателен.

1. Создать в 3.6.5 документ, вставить прилагаемый SVG.
2. Сохранить.
3. Распаковать ODF, проверить, что внутри только SVG.

1. Создать в 4.0.x документ, вставить прилагаемый SVG.
2. Сохранить.
3. Распаковать ODF, убедиться, что там и SVG и PNG.

Если имеет смыл, то ко второй части можно добавить:
4. Открыть этот документ в 3.6.5, пересохранить.
5. Распаковать и убедиться, что там теперь только PNG.

frob

Цитата: greenman от 17 марта 2013, 18:26
Если имеет смыл, то ко второй части можно добавить:
4. Открыть этот документ в 3.6.5, пересохранить.
5. Распаковать и убедиться, что там теперь только PNG.

Имеет -- получается, что LO4 и LO3.6 по-разному трактуют содержимое, что приводит к потере данных.
Исходный "пункт 4" позволяет обойтись одним пунктом вместо двух.

По поводу "тормозов".
1. Можно упомянуть в этом же баге, что LO4 значительно теряет в отзывчивости.
2. Если есть охота поковыряться в градиентах дело или нет -- наваять пару простых файлов: в один впихнуть пару десятков прямоугольников со сплошной заливкой, в другом один десяток выкинуть, из оставшихся половину окрасить разными градиентами.
Сравнить как оно себя ведёт с этими файлами. (Во избежание всяких интересных побочных эффектов при масштабировании и пр. изображение сделать заведомо влезающим на страницу.)