summaryrefslogtreecommitdiffstats
path: root/doc/ru/internals-libs.html
blob: 86f329780595f23dbc3e3b844607aef777abada2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
<html><head><title>Свои библиотеки</title><link rel="stylesheet" href="help:/common/tde-default.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.67.2"><meta name="keywords" content="KDE, image, viewer, picture"><link rel="start" href="index.html" title="KSquirrel Руководство Пользователя"><link rel="up" href="internals.html" title="Глава 2. Отличие KSquirrel от других просмотрщиков. Свои библиотеки."><link rel="prev" href="internals.html" title="Глава 2. Отличие KSquirrel от других просмотрщиков. Свои библиотеки."><link rel="next" href="interface.html" title="Глава 3. Интерфейс"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="GENERATOR" content="KDE XSL Stylesheet V1.13 using libxslt"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div style="background-image: url(help:/common/top-middle.png); width: 100%; height: 131px;"><div style="position: absolute;                      right: 0px;"><img src="help:/common/top-right-konqueror.png" style="margin: 0px" alt=""></div><div style="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><div style="margin-top: 20px; background-color: #white;                        color: black;                       margin-left: 20px;                        margin-right: 20px;"><div style="position: absolute;                          left: 20px;"><a accesskey="p" href="internals.html">Пред.</a></div><div style="position: absolute;                          right: 20px;"><a accesskey="n" href="interface.html">След.</a></div><div class="navCenter">Отличие KSquirrel от других просмотрщиков. Свои библиотеки.</div></div><div class="sect1" lang="ru"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="internals-libs"></a>Свои библиотеки</h2></div></div></div><p>Почти во всех программах просмотра изображений для декодирования используются сторонние библиотеки. Примером могут служить такие библиотеки как imlib (Image Magic) и Qt. На первый взгляд, преимущества такого способа очевидны - это перекладывание головной боли по декодированию изображений на другие библиотеки, вообще абстрагируясь от низкого уровня работы с изображениями, альфа каналами, битовыми масками, RLE кодированием и прочего. Но у этого способа есть несколько очевидных недостатков. К ним причисляется, во-первых, частичное отсутствие расширяемости набора кодеков изображений. Во-вторых, это зависимость кодеков от больших (а иногда очень больших) библиотек, типа Qt. В-третьих, отсутствие поддержки анимаций, типа GIF, FLI или MNG. В-четвёртых, отсутствие возможности декодирования отдельных строк.</p><p>
Исходя из всех этих недостатков, было решено отказаться от помощи сторонних библиотек и разработать собственные библиотеки, которые могли бы не зависеть от других библиотек, кроме стандартных и требуемых самими кодеками (такие, как libsvg, libmng и др.), загружаться динамически, быть полностью расширяемыми, поддерживать декодирование строк и анимацию. Эти библиотеки получили название «<span class="quote">ksquirrel-libs</span>».
</p><p>
На момент написания данной документации ksquirrel-libs поддерживал 51 формат изображений, включая <span class="acronym">PNG</span>, <span class="acronym">JPEG</span>, <span class="acronym">Photoshop PSD</span>, <span class="acronym">AutoCAD DXF</span>, <span class="acronym">WMF</span>, <span class="acronym">SVG</span>, <span class="acronym">MNG</span> и <span class="acronym">GIF</span>. Имеются также кодеки для поддержки файлов шрифтов <span class="acronym">TTF</span>, анимаций <span class="acronym">FLI</span> и X-овых курсоров.
</p><p>
ksquirrel-libs поддерживает также текстовые поля (комментарии и др.), сохраняемые в некоторых типах изображений. Например, PNG и GIF кодеки способны читать комментарии из данных типов файлов.
</p><div class="sect2" lang="ru"><div class="titlepage"><div><div><h3 class="title"><a name="internals-specific"></a>Работа KSquirrel с библиотеками</h3></div></div></div><p>
Благодаря вышеуказанным свойствам библиотек ksquirrel-libs, KSquirrel приобретает следущие особенности:

<div class="orderedlist"><ol type="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>Информацию о всех найденных кодеках можно просмотеть в диалоге «<span class="quote">Информация о плагинах</span>», как показано на скриншоте.</p><div class="screenshot"><div xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" class="mediaobject"><hr><img src="plugins_info.png" alt="Информация по найденным кодекам"><hr></div></div><p>Подсказка: слева от имени кодека может отображаться значёк настроек, как показано на рисунке для кодека GIMP XCF. Это означает, что данный кодек может быть настроен для работы с различными параметрами. Например, для кодека GIMP XCF можно настроить цвет фона для прозрачных изображений.</p></div></div><div style="background-color: #white; color: black;                  margin-top: 20px; margin-left: 20px;                  margin-right: 20px;"><div style="position: absolute; left: 20px;"><a accesskey="p" href="internals.html">Пред.</a></div><div style="position: absolute; right: 20px;"><a accesskey="n" href="interface.html">След.</a></div><div align="center"><a accesskey="h" href="index.html">Начало</a></div></div><div style="background-color: #white;   color: black;         margin-left: 20px;   margin-right: 20px;"><div class="navLeft">Отличие KSquirrel от других просмотрщиков. Свои библиотеки. </div><div class="navRight"> Интерфейс</div><div class="navCenter"><a accesskey="u" href="internals.html">Уровень выше</a></div></div><br><br><div class="bannerBottom" style="background-image: url(help:/common/bottom-middle.png);                                        background-repeat: x-repeat;                                         width: 100%;                                         height: 100px;                                         bottom:0px;"><div class="BannerBottomRight"><img src="help:/common/bottom-right.png" style="margin: 0px" alt=""></div><div class="bannerBottomLeft"><img src="help:/common/bottom-left.png" style="margin: 0px;" alt=""></div><div id="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 <a href="mailto:kde-docs@kdemail.net" style="background:transparent; color:#cfe1f6; text-decoration: underline;">KDE Docs Team</a></p></div></div></body></html>