Снова о метафайлах ....

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Снова о метафайлах ....

Сообщение Alex2013 » 02.03.2017 23:32:27

И так сподобился я сделать запись в WMF... в процессе внезапно обнаружил, что в библиотеке MyMetafile вместо записи и чтения стоит "заглушка". raise EComponentError.Create('Not Implemented'); ... ну если гора не идет к Магомету ... Магомет запасется динамитом и.... одной "феноменально неразумной" горой становится меньше ! 8) Вообщем выдрал кусок кода из TADrawerWMF.pas (котрый из хронически недоделанного пакета AChar)

Код: Выделить всё
procedure TMetafile.SaveToFile(const Filename: String);
var
  outFile: HENHMETAFILE;
begin
   if FImageHandle = 0 then exit;
  outFile := CopyEnhMetaFile(FImageHandle, PChar(FileName));
  if outFile = 0 then
    RaiseLastWin32Error;
    DeleteEnhMetaFile(outFile);

end;

Для меня квест на этом благополучно закончился ... но там еще три заглушки осталось ... (На чтение из файла на чтение из потока и на запись в поток ) в поисках решения обнаружил что в Кол все "с точностью до наоборот " есть чтение но нет записи .... но напрямую перенести едва ли получится ... бо намудрили ....

Так или иначе но библиотеку нужно править иначе она так и останется недоделкой !

Зы
Кстати, протестировал то что записалось в WMF открыв в КорелДрав ... гм открылось ! (IrfanView и Paint показывают 1:1 но там редактировать нельзя) получилось похоже но чуть с искажениями .... быстродействие при том-же объеме графики что и в моем редакторе среднем разумеется выше в КорелДрав ... но какой тормоз при изменении размера для всей группы (причем что странно никакой буферизации рисует прямо на экране )! Это нужно видеть ! И это как-бы ультро профессиональная "Колка Дров" бррр...
Странности : при загрузке "в колотые дрова" все элементы дублируются, а картинки еще и фон прямоугольный имеют ... Вопрос, что бы это значило ? Где "грабля" в формате WMF или моем "рендаре" ? :roll:

Вот две "самодельные" WMF-ки :
:arrow: Мой "мега тест" Les4
:arrow:Псевдо Веб-страница
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

Re: Снова о метафайлах ....

Сообщение zub » 03.03.2017 00:45:40

Предллагаю убрать растр и градиент и помериться пиписьками

Добавлено спустя 12 минут 43 секунды:
>>Так или иначе но библиотеку нужно править иначе она так и останется недоделкой !
Правь не правь, а она так и останется умершей. wmf был актуален лет 20 назад, сейчас он никому не нужен.

>>И это как-бы ультро профессиональная "Колка Дров" бррр...
Не знаю точно, но думаю что это сделано специально, чтоб не тормозить ползователя - он ведь может выделить 100500 примитивов и пытаться их масштабировать. Вот они и рисуются дозировано, чтоб не тратить время впустую, кроме того различные оптимизации типа кэширования в этот момент к ним не применяются - нет смысла. Лучше бы внимательней смотрел как там организованно, а не критиковал.
Кроме того, ты у себя имеешь небольшое количество относительно сложных примитивов (и хз почему не используешь этот момент в оптимизациях вывода), а в корел ты скармливаешь большое количество простейших примитивов - их оптимизировать сложнее. Автокад например твои элипсы сделал полилиниями из 100 сегментов, хз так есть в вмф или это прихоть автокада

Но глядя на твои скриншоты - не представляю что там может затормозить корела))
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Снова о метафайлах ....

Сообщение Alex2013 » 03.03.2017 01:41:49

"Семь раз отмерь ..." и дальше по тексту ... :mrgreen:
Я к тому, что мерь немерь, а "двоение в "дровах" так просто небьяснишь ...
Или формат кривой или "дров не здоров" или библиотека с фоуксами или я что-то не так делаю ... Хотя где и как в упор не пойму! :shock:
(В WMF градиент идет линиями это да но причем там всякой "твари по паре"+искажения притом что в почти самодельном IrfanView-ре "все пучком" ? :roll: )

А про устарелость WMF и мета файлов можно спорить... но я не буду ! дело в том что это по сути внутренний формат буферизации перерисовки в GDI а значит МС будет тащить его поддержку еще очень долго ... Другое дело, что упаси бог пытаться его парсить самостоятельно (Что показываю те-же "колотые дрова" )... а так "что записал то увидел" и тчк ! :idea:
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

Re: Снова о метафайлах ....

Сообщение zub » 03.03.2017 01:57:51

Какие искажения?
Вмф имеет свой набор примитивов, корел свой. кто тебе обещал что они туда сюда один в один будут?
Ненадо рассматривать вмф как прецензионный формат, выглядящий везде одинаково. Его поддерживает гди и соответственно программы "пачкающие" канвас. Томуже корелу он до лампочки, разве что чтобы ченить передать через клипборд

Добавлено спустя 4 минуты 31 секунду:
>>А про устарелость WMF и мета файлов можно спорить... но я не буду !
И верно. он был им кучу лет назад, сейчас так... для совместимости. кроме того отсутствие этого формата в других осях - даже не делит, а умножает его на ноль((

>>Другое дело, что упаси бог пытаться его парсить самостоятельно (Что показываю те-же "колотые дрова" )... а так "что записал то увидел" и тчк !
Вот тут парсят, уж незнаю насколько успешно
http://svn.freepascal.org/cgi-bin/viewv ... ot=lazarus
Если формат открытый и никаких "шифровальных" недокументированых мер нет - распарсить его дело техники. Другое дело потом нарисовать то что распарсилось)) Но с вмф и тут проблем недолжно быть - ведь он только "запись" манипуляций с контекстом
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 30

Рейтинг@Mail.ru