<html><head><title>Свои библиотеки</title><linkrel="stylesheet"href="help:/common/tde-default.css"type="text/css"><metaname="generator"content="DocBook XSL Stylesheets V1.67.2"><metaname="keywords"content="KDE, image, viewer, picture"><linkrel="start"href="index.html"title="KSquirrel Руководство Пользователя"><linkrel="up"href="internals.html"title="Глава 2. Отличие KSquirrel от других просмотрщиков. Свои библиотеки."><linkrel="prev"href="internals.html"title="Глава 2. Отличие KSquirrel от других просмотрщиков. Свои библиотеки."><linkrel="next"href="interface.html"title="Глава 3. Интерфейс"><metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"><metaname="GENERATOR"content="KDE XSL Stylesheet V1.13 using libxslt"></head><bodybgcolor="white"text="black"link="#0000FF"vlink="#840084"alink="#0000FF"><divstyle="background-image: url(help:/common/top-middle.png); width: 100%; height: 131px;"><divstyle="position: absolute; right: 0px;"><imgsrc="help:/common/top-right-konqueror.png"style="margin: 0px"alt=""></div><divstyle="position: absolute; top: 25px; right: 100px; text-align: right; font-size: xx-large; font-weight: bold; text-shadow: #fff 0px 0px 5px; color: #444">Свои библиотеки</div></div><divstyle="margin-top: 20px; background-color: #white; color: black; margin-left: 20px; margin-right: 20px;"><divstyle="position: absolute; left: 20px;"><aaccesskey="p"href="internals.html">Пред.</a></div><divstyle="position: absolute; right: 20px;"><aaccesskey="n"href="interface.html">След.</a></div><divclass="navCenter">Отличие KSquirrel от других просмотрщиков. Свои библиотеки.</div></div><divclass="sect1"lang="ru"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aname="internals-libs"></a>Свои библиотеки</h2></div></div></div><p>Почти во всех программах просмотра изображений для декодирования используются сторонние библиотеки. Примером могут служить такие библиотеки как imlib (Image Magic) и Qt. На первый взгляд, преимущества такого способа очевидны - это перекладывание головной боли по декодированию изображений на другие библиотеки, вообще абстрагируясь от низкого уровня работы с изображениями, альфа каналами, битовыми масками, RLE кодированием и прочего. Ноу этого способа есть несколько очевидных недостатков. К ним причисляется, во-первых, частичное отсутствие расширяемости набора кодеков изображений. Во-вторых, это зависимость кодеков от больших (а иногда очень больших) библиотек, типа Qt. В-третьих, отсутствие поддержки анимаций, типа GIF, FLI или MNG. В-четвёртых, отсутствие возможности декодирования отдельных строк.</p><p>
Исходя из всех этих недостатков, было решено отказаться от помощи сторонних библиотек и разработать собственные библиотеки, которые могли бы не зависеть от других библиотек, кроме стандартных и требуемых самими кодеками (такие, как libsvg, libmng и др.), загружаться динамически, быть полностью расширяемыми, поддерживать декодирование строк и анимацию. Эти библиотеки получили название «<spanclass="quote">ksquirrel-libs</span>».
</p><p>
На момент написания данной документации ksquirrel-libs поддерживал 51 формат изображений, включая <spanclass="acronym">PNG</span>, <spanclass="acronym">JPEG</span>, <spanclass="acronym">Photoshop PSD</span>, <spanclass="acronym">AutoCAD DXF</span>, <spanclass="acronym">WMF</span>, <spanclass="acronym">SVG</span>, <spanclass="acronym">MNG</span> и <spanclass="acronym">GIF</span>. Имеются также кодеки для поддержки файлов шрифтов <spanclass="acronym">TTF</span>, анимаций <spanclass="acronym">FLI</span> и X-овых курсоров.
</p><p>
ksquirrel-libs поддерживает также текстовые поля (комментарии и др.), сохраняемые в некоторых типах изображений. Например, PNG и GIF кодеки способны читать комментарии из данных типов файлов.
</p><divclass="sect2"lang="ru"><divclass="titlepage"><div><div><h3class="title"><aname="internals-specific"></a>Работа KSquirrel с библиотеками</h3></div></div></div><p>
Благодаря вышеуказанным свойствам библиотек ksquirrel-libs, KSquirrel приобретает следущие особенности:
<divclass="orderedlist"><oltype="1"><li><p>KSquirrel практически не знает, какой кодек будет использован для декодирования изображения - это определяется динамически.</p></li><li><p>KSquirrel практически не знает, сколько страниц в декодируемом изображении и является ли оно анимацией - это определяется динамически.</p></li><li><p>Благодаря поддержке декодирования отдельных строк, KSquirrel показывает изображения прогрессивно, т.е. по мере декодирования.</p></li></ol></div>
</p><p>Когда KSquirrel загрузил все найденные библиотеки (используя Qt класс QLibrary), появляется возможность отображать любые поддерживанмые типы изображений (как статичных, так и анимированных). Когда пользователь выбирает изображение в навигаторе, KSquirrel по MIME типу либо расширению файла определяет, поддерживается ли данный формат изображения. Если данный формат поддерживается, то, используя найденную библиотеку, KSquirrel приступает к декодированию изображения и отображению его в окне просмотра.</p><p>Информацию о всех найденных кодеках можно просмотеть в диалоге «<spanclass="quote">Информация о плагинах</span>», как показано на скриншоте.</p><divclass="screenshot"><divxmlns:doc="http://nwalsh.com/xsl/documentation/1.0"class="mediaobject"><hr><imgsrc="plugins_info.png"alt="Информация по найденным кодекам"><hr></div></div><p>Подсказка: слева от имени кодека может отображаться значёк настроек, как показано на рисунке для кодека GIMP XCF. Это означает, что данный кодек может быть настроен для работы с различными параметрами. Например, для кодека GIMP XCF можно настроить цвет фона для прозрачных изображений.</p></div></div><divstyle="background-color: #white; color: black; margin-top: 20px; margin-left: 20px; margin-right: 20px;"><divstyle="position: absolute; left: 20px;"><aaccesskey="p"href="internals.html">Пред.</a></div><divstyle="position: absolute; right: 20px;"><aaccesskey="n"href="interface.html">След.</a></div><divalign="center"><aaccesskey="h"href="index.html">Начало</a></div></div><divstyle="background-color: #white; color: black; margin-left: 20px; margin-right: 20px;"><divclass="navLeft">Отличие KSquirrel от других просмотрщиков. Свои библиотеки.</div><divclass="navRight"> Интерфейс</div><divclass="navCenter"><aaccesskey="u"href="internals.html">Уровень выше</a></div></div><br><br><divclass="bannerBottom"style="background-image: url(help:/common/bottom-middle.png); background-repeat: x-repeat; width: 100%; height: 100px; bottom:0px;"><divclass="BannerBottomRight"><imgsrc="help:/common/bottom-right.png"style="margin: 0px"alt=""></div><divclass="bannerBottomLeft"><imgsrc="help:/common/bottom-left.png"style="margin: 0px;"alt=""></div><divid="comments"style="position:relative; top: 5px; left: 1em; height:85px; width: 50%; color: #cfe1f6"><p>Would you like to make a comment or contribute an update to this page?<br>
Send feedback to the <ahref="mailto:kde-docs@kdemail.net"style="background:transparent; color:#cfe1f6; text-decoration: underline;">KDE Docs Team</a></p></div></div></body></html>