![]() | Свои библиотеки |
Пред. | Отличие KSquirrel от других просмотрщиков. Свои библиотеки | След. |
Почти во всех программах просмотра изображений для декодирования используются сторонние библиотеки. Примером могут служить такие библиотеки как imlib (Image Magic) и Qt. На первый взгляд, преимущества такого способа очевидны - это перекладывание головной боли по декодирования изображений на другие библиотеки, вообще абстрагируясь от низкого уровня работы с изображениями, альфа каналов, битовых масок, RLE кодирования и прочего. Но у этого способа есть несколько очевидных недостатков. К ним причисляется, во-первых, частичное отсутствие расширяемости набора кодеков изображений. Во-вторых, это зависимость кодеков от больших (а иногда очень больших) библиотек, типа Qt. В-третьих, отсутствие поддержки анимаций, типа GIF или MNG. В-четвёртых, отсутствие возможности декодирования отдельных строк.
Исходя из всех этих недостатков, было решено отказаться от помощи сторонних библиотек и разработать собственные библиотеки, которые могли бы не зависеть от других библиотек, кроме стандартных или требуемых самими кодеками (такие, как libsvg, libmng), загружаться динамически, быть полностью расширяемыми, поддерживать декодирование строк и анимацию. Эти библиотеки получили название “ksquirrel-libs”.
На момент написания данной документации ksquirrel-libs поддерживал 41 формат изображений, включая PNG, JPEG, PSD, WMF, SVG, MNG и GIF. Имеются также кодеки для поддержки файлов шрифтов TTF, анимаций FLI и X-овых курсоров.
ksquirrel-libs поддерживает также текстовые поля (комментарии и др.), сохраняемые в некоторых типах изображений. Например, PNG и GIF кодеки способны читать комментарии из данных типов файлов.
Благодаря вышеуказанным свойствам библиотек ksquirrel-libs, KSquirrel приобретает следущие особенности:
KSquirrel практически не знает, какой кодек будет использован для декодирования изображения - это определяется динамически.
KSquirrel практически не знает, сколько страниц в декодируемом изображении и является ли оно анимацией - это определяется динамически.
Догрузка и выгрузка библиотек полностью динамическая. Это означает, что библиотеки можно добавлять даже во время работы в KSquirrel
Благодаря поддержке декодирования отдельных строк, KSquirrel показывает изображения прогрессивно, т.е. по мере декодирования.
Когда KSquirrel загрузил все найденные библиотеки (используя Qt класс QLibrary), появляется возможность отображать любые поддерживанмые типы изображений (как статичных, так и анимированных). Когда пользователь кликает по файлу изображения в навигаторе, KSquirrel по MIME типу либо расширению файла определяет, поддерживается ли данный формат изображения. Если данный формат поддерживается, то, используя найденную библиотеку, KSquirrel приступает к декодированию изображения и отображению его в окне просмотра.
Информацию о всех найденных кодеках можно просмотеть в диалоге “Информация о плагинах”, как показано на скриншоте.
Пред. | Начало | След. |
Отличие KSquirrel от других просмотрщиков. Свои библиотеки | Уровень выше | Интерфейс |