OberonCore
https://forum.oberoncore.ru/

Zlib
https://forum.oberoncore.ru/viewtopic.php?f=90&t=963
Страница 1 из 6

Автор:  Штирлиц [ Понедельник, 21 Апрель, 2008 14:18 ]
Заголовок сообщения:  Zlib

Господа!
А есть ли где-нибудь порт zlib на Component Pascal?

Обновлено модератором 23.10.2010: http://oberoncore.ru/bbcc/subs/zlib/

Автор:  Info21 [ Понедельник, 21 Апрель, 2008 17:13 ]
Заголовок сообщения:  Re: Порт zlib

Штирлиц писал(а):
Господа!
А есть ли где-нибудь порт zlib на Component Pascal?


Это не тот, что используется в формате png?
Надо бы научить ББ сжимать картинки для хранения в документах, а то простенькие картинки раздувают файл.

Подсистема Pac что-то про сжатие содержит -- интересно, пересекается ли с zlib.

Автор:  Штирлиц [ Понедельник, 21 Апрель, 2008 17:25 ]
Заголовок сообщения:  Re: Порт zlib

Info21 писал(а):
Штирлиц писал(а):
Господа!
А есть ли где-нибудь порт zlib на Component Pascal?


Это не тот, что используется в формате png?
Надо бы научить ББ сжимать картинки для хранения в документах, а то простенькие картинки раздувают файл.

Подсистема Pac что-то про сжатие содержит -- интересно, пересекается ли с zlib.


Вот как раз для png то мне и нужно.
Чтобы самому не писать, если уже есть.

Автор:  Борис Рюмшин [ Понедельник, 21 Апрель, 2008 19:05 ]
Заголовок сообщения:  Re: Порт zlib

Info21 писал(а):
Подсистема Pac что-то про сжатие содержит -- интересно, пересекается ли с zlib.

Нет, не пересекается.

Самое простое - сделать интерфейсный модуль к соответствующей виндовой библиотеки.

Автор:  Илья Ермаков [ Понедельник, 21 Апрель, 2008 19:39 ]
Заголовок сообщения:  Re: Порт zlib

Можно взять за ориентир ZStreams дельфовые - что-то такое было....

Автор:  Борис Рюмшин [ Понедельник, 21 Апрель, 2008 21:49 ]
Заголовок сообщения:  Re: Порт zlib

Илья Ермаков писал(а):
Можно взять за ориентир ZStreams дельфовые - что-то такое было....

Если бы речь шла просто о сжатии информации, то можно было бы взять Pac и сопутствующие алгоритмы, которые с ним в комплекте не идут (см. коллекцию Зинна). Я вот например мечтаю, что кто-нибудь сообразит поддержку формата 7-zip (открытый и расширяемый) и алгоритма LZMA, ибо самому хоцца, но не досуг. :)

А так как речь идёт о PNG, то брать нужно вполне конкретную вещь и работать с ней стандартно (либо полностью портировать, что было бы очень не плохо, на будущее).

Автор:  Евгений Темиргалеев [ Вторник, 22 Апрель, 2008 08:25 ]
Заголовок сообщения:  Re: Порт zlib

Info21 писал(а):
Это не тот, что используется в формате png?
Надо бы научить ББ сжимать картинки для хранения в документах, а то простенькие картинки раздувают файл.

Один раз нужно было вставить картинку в качестве комментария к исходнику. Bmp вставлять не понравилось как раз из-за раздувания. Я вставлял png при помощи Abf медиа. Там картинки через FreeImage отображаются, png оно поддерживает. Внутрь документа внедрять не стал (хотя вроде можно), файл картинки лежит рядом с исходниками.

Автор:  Борис Рюмшин [ Вторник, 22 Апрель, 2008 08:52 ]
Заголовок сообщения:  Re: Порт zlib

Евгений Темиргалеев писал(а):
Info21 писал(а):
Это не тот, что используется в формате png?
Надо бы научить ББ сжимать картинки для хранения в документах, а то простенькие картинки раздувают файл.

Один раз нужно было вставить картинку в качестве комментария к исходнику. Bmp вставлять не понравилось как раз из-за раздувания. Я вставлял png при помощи Abf медиа. Там картинки через FreeImage отображаются, png оно поддерживает. Внутрь документа внедрять не стал (хотя вроде можно), файл картинки лежит рядом с исходниками.

Кстати да, FreeImage поддерживает многие форматы...

Однако порт PNG не помешает... :)

Автор:  Info21 [ Вторник, 22 Апрель, 2008 11:42 ]
Заголовок сообщения:  Re: Порт zlib

Борис Рюмшин писал(а):
... А так как речь идёт о PNG, то брать нужно вполне конкретную вещь и работать с ней стандартно ...


Тут два пункта:
1) полная поддержка PNG (а там всего до дьявола).
2) поддержка частичная -- только для ужатия BMP в документах (причем, видимо, для начала не любых BMP, а подмножества для конкретной работы), а это гораздо проще.

Для 2), строго говоря, PNG не нужен, может, стоит на 1м шаге сделать какие-то абстрактные хуки, и подвести под них че-нить из Pac?
Впрочем, речь о хранимых документах, поэтому все реализации придется тащить в будущее...

Автор:  Штирлиц [ Вторник, 22 Апрель, 2008 11:49 ]
Заголовок сообщения:  Re: Порт zlib

Я нашел в сети zlib.NET_104
Попробую портировать ее в BlackBox и прикрутить к png
Получится без сторонних dll

Автор:  Info21 [ Вторник, 22 Апрель, 2008 14:02 ]
Заголовок сообщения:  Re: Порт zlib

Штирлиц писал(а):
Попробую портировать ее в BlackBox и прикрутить к png


Это будет здорово!

Автор:  Штирлиц [ Пятница, 16 Май, 2008 15:50 ]
Заголовок сообщения:  Re: Порт zlib

Перенес Zlib с Oberon V4 под BlackBox
Прошу тестировать, може что и не работать.
Замечания welcom.

P.S. Сравните читабельность кода оригинального ZipOberon
и zlib.NET_104. Конечно можно извратиться на любом языке,
каким бы он не был, но по моему ZipOberon
писали люди с правильными извилинами и руками.

Автор:  Борис Рюмшин [ Вторник, 03 Июнь, 2008 16:00 ]
Заголовок сообщения:  Re: Порт zlib

Штирлиц писал(а):
Перенес Zlib с Oberon V4 под BlackBox
Прошу тестировать, може что и не работать.
Замечания welcom.

С внешней стороны вроде как всё нормально, хотя подробно не тестировал. А на счёт реализации PNG: не стоит ли её взять тоже из внешнего источника - из BlueBottle.

P.S. Несмотря на неудачную, предпринятую однажды, попытку создать единую библиотеку для разнородных Оберонов, в этой идее есть смысл. Как минимум неплохо бы аккумулировать что-то кроссобероновское для поддержки различных передовых медиа-форматов и форматов документов... не всего подряд, а только самого необходимого...

Автор:  Штирлиц [ Вторник, 03 Июнь, 2008 16:13 ]
Заголовок сообщения:  Re: Порт zlib

Борис Рюмшин писал(а):
Штирлиц писал(а):
Перенес Zlib с Oberon V4 под BlackBox
Прошу тестировать, може что и не работать.
Замечания welcom.

С внешней стороны вроде как всё нормально, хотя подробно не тестировал. А на счёт реализации PNG: не стоит ли её взять тоже из внешнего источника - из BlueBottle.

P.S. Несмотря на неудачную, предпринятую однажды, попытку создать единую библиотеку для разнородных Оберонов, в этой идее есть смысл. Как минимум неплохо бы аккумулировать что-то кроссобероновское для поддержки различных передовых медиа-форматов и форматов документов... не всего подряд, а только самого необходимого...


По PNG я как раз эти и занимаюсь. :D
Просто времени немного не хватает.
В Aos в AosPNGDecoder.Mod к сожалению реализован только non interlace method
а Adam7 - нет

Автор:  Борис Рюмшин [ Вторник, 03 Июнь, 2008 16:16 ]
Заголовок сообщения:  Re: Порт zlib

Штирлиц писал(а):
В Aos в AosPNGDecoder.Mod к сожалению реализован только non interlace method
а Adam7 - нет

Ну хоть что-то, уже неплохо...

Автор:  Пётр Кушнир [ Среда, 04 Июнь, 2008 19:12 ]
Заголовок сообщения:  Re: Порт zlib

Такой вопрос про использований Zlib:
А как создать внутри архива каталог? Вот многие архиваторные програмы умеют запаковывать в архив файлы вместе с каталогами, а в ZlibZip в интерфесе модуля я не нашёл ни одной зацепки. Если возможно, просто ткните в какой-нибудь документ, в котором всё внятно описано.
ЗЫ: чем проще, тем лучше. Очень не хочется изучать все премудрости упаковщика.

Автор:  Штирлиц [ Среда, 04 Июнь, 2008 19:23 ]
Заголовок сообщения:  Re: Порт zlib

Petryxa писал(а):
Такой вопрос про использований Zlib:
А как создать внутри архива каталог? Вот многие архиваторные програмы умеют запаковывать в архив файлы вместе с каталогами, а в ZlibZip в интерфесе модуля я не нашёл ни одной зацепки. Если возможно, просто ткните в какой-нибудь документ, в котором всё внятно описано.
ЗЫ: чем проще, тем лучше. Очень не хочется изучать все премудрости упаковщика.


Я сам толком не разбирался, но в ZlibZip - есть EntryDesc

Автор:  Пётр Кушнир [ Среда, 04 Июнь, 2008 19:48 ]
Заголовок сообщения:  Re: Порт zlib

Всё оказалось очень просто. Надо только при добавлении Entry в архив указать в названии относительный путь к файлу. Это и будет считаться каталогом. Например, вот так:
Код:
PROCEDURE Test*;
VAR arc: ZlibZip.Archive; loc: Files.Locator; f : Files.File; r: Files.Reader; res: INTEGER;
BEGIN
 arc := ZlibZip.OpenArchive("archive.zip", res);
 IF res = ZlibZip.Ok THEN
   loc := Files.dir.This("Zlib/Rsrc/");
   f := Files.dir.Old(loc, "file.ext", TRUE);
   r := f3.NewReader(NIL);
   ZlibZip.AddEntry(arc, "dir/file.ext", r, f.Length(), SHORT(ZlibConst.BestCompression), SHORT(ZlibConst.DefaultStrategy), res);
   ZlibZip.CloseArchive(arc, res)
 END
END Test;

Автор:  Пётр Кушнир [ Среда, 04 Июнь, 2008 19:56 ]
Заголовок сообщения:  Re: Порт zlib

Обнаружил ошибку: несовместимость с русскими буквами. Если в качестве названия упаковываемого файла указать русские буквы то внутри полученного архива имя файла отобразится в виде крякозябров, и если открыть архив, упакованный сторонним паковщиком(я использовал стандартный плагин Тотал Коммандера), то при просмотре названия содержимого также видны крякозябры.

Автор:  Штирлиц [ Понедельник, 09 Июнь, 2008 11:39 ]
Заголовок сообщения:  Re: Порт zlib

Порт zlib с исправлениями.
Для того, чтобы корректно отображались файлы с русскими
именами надо использовать CharToOem.
Пример приведен в Testzip.

[Модератор] с 20.10.2010 размещён: http://oberoncore.ru/bbcc/subs/zlib/

Страница 1 из 6 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/