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 я как раз эти и занимаюсь. Просто времени немного не хватает. В 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/ |