You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ksquirrel/doc/ru/internals.docbook

72 lines
9.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<chapter id="internals">
<chapterinfo>
<authorgroup>
<author>&Dmitry.Baryshev;</author>
<!-- TRANS:ROLES_OF_TRANSLATORS -->
</authorgroup>
<date>2007-03-10</date>
<releaseinfo>0.3</releaseinfo>
</chapterinfo>
<title>Отличие &kappname; от других просмотрщиков. Свои библиотеки.</title>
<sect1 id="internals-opengl">
<title>Использование OpenGL.</title>
<para>На данный момент имеется возможность использовать несколько различных способов отображения изображений. В качестве движков можно использовать OpenGL, MIT-SHM, Qt, gdk-pixbuf с MMX оптимизацией. Главное их отличие друг от друга - это скорость. Например, отображение изображений с помощью средств Qt будет работать очень медленно (даже в случае наличия собственной MMX оптимизации), или же gdk-pixbuf для GTK приложений будет работать приемлимо для среднего размера изображений.</para>
<para>Использование OpenGL в качестве движка просмотра изображений имеет свои преимущества и недостатки. В качестве преимущества можно упомянуть большую скорость манипулирования изображением (увеличение, уменьшение, повороты, сдвиги...), недоступную другим способам отображения. В противовес этому, как недостаток можно упомянуть наоборот очень низкую скорость манипулирования изображением, которое полностью не помещается в видеопамять Вашей видеокарты. Например, с большой вероятностью изображение 9600x9600 не поместится в видеопамять видеокарты среднего класса, как моей GF MX440, и масштабирование в окне просмотра будет работать крайне медленно. Таким образом, &kappname; отлично подходит для просмотра <quote>домашних</quote> изображений - иллюстраций стандартных размеров, сканированных листов A4, фотографий с цифрового фотоаппарата и т.п., но будет работать с затруднениями с огромными изображениями.</para>
</sect1>
<sect1 id="internals-libs">
<title>Свои библиотеки</title>
<para>Почти во всех программах просмотра изображений для декодирования используются сторонние библиотеки. Примером могут служить такие библиотеки как imlib (Image Magic) и Qt. На первый взгляд, преимущества такого способа очевидны - это перекладывание головной боли по декодированию изображений на другие библиотеки, вообще абстрагируясь от низкого уровня работы с изображениями, альфа каналами, битовыми масками, RLE кодированием и прочего. Но у этого способа есть несколько очевидных недостатков. К ним причисляется, во-первых, частичное отсутствие расширяемости набора кодеков изображений. Во-вторых, это зависимость кодеков от больших (а иногда очень больших) библиотек, типа Qt. В-третьих, отсутствие поддержки анимаций, типа GIF, FLI или MNG. В-четвёртых, отсутствие возможности декодирования отдельных строк.</para>
<para>
Исходя из всех этих недостатков, было решено отказаться от помощи сторонних библиотек и разработать собственные библиотеки, которые могли бы не зависеть от других библиотек, кроме стандартных и требуемых самими кодеками (такие, как libsvg, libmng и др.), загружаться динамически, быть полностью расширяемыми, поддерживать декодирование строк и анимацию. Эти библиотеки получили название <quote>&klibname;</quote>.
</para>
<para>
На момент написания данной документации &klibname; поддерживал 51 формат изображений, включая <acronym>PNG</acronym>, <acronym>JPEG</acronym>, <acronym>Photoshop PSD</acronym>, <acronym>AutoCAD DXF</acronym>, <acronym>WMF</acronym>, <acronym>SVG</acronym>, <acronym>MNG</acronym> и <acronym>GIF</acronym>. Имеются также кодеки для поддержки файлов шрифтов <acronym>TTF</acronym>, анимаций <acronym>FLI</acronym> и X-овых курсоров.
</para>
<para>
&klibname; поддерживает также текстовые поля (комментарии и др.), сохраняемые в некоторых типах изображений. Например, PNG и GIF кодеки способны читать комментарии из данных типов файлов.
</para>
<sect2 id="internals-specific">
<title>Работа &kappname; с библиотеками</title>
<para>
Благодаря вышеуказанным свойствам библиотек &klibname;, &kappname; приобретает следущие особенности:
<orderedlist>
<listitem><para>&kappname; практически не знает, какой кодек будет использован для декодирования изображения - это определяется динамически.</para></listitem>
<listitem><para>&kappname; практически не знает, сколько страниц в декодируемом изображении и является ли оно анимацией - это определяется динамически.</para></listitem>
<listitem><para>Благодаря поддержке декодирования отдельных строк, &kappname; показывает изображения прогрессивно, т.е. по мере декодирования.</para></listitem>
</orderedlist>
</para>
<para>Когда &kappname; загрузил все найденные библиотеки (используя Qt класс QLibrary), появляется возможность отображать любые поддерживанмые типы изображений (как статичных, так и анимированных). Когда пользователь выбирает изображение в навигаторе, &kappname; по MIME типу либо расширению файла определяет, поддерживается ли данный формат изображения. Если данный формат поддерживается, то, используя найденную библиотеку, &kappname; приступает к декодированию изображения и отображению его в окне просмотра.</para>
<para>Информацию о всех найденных кодеках можно просмотеть в диалоге <quote>Информация о плагинах</quote>, как показано на скриншоте.</para>
<screenshot>
<screeninfo>Информация по найденным кодекам</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="plugins_info.png" format="PNG" />
</imageobject>
<textobject><phrase>Информация по найденным кодекам</phrase></textobject>
</mediaobject>
</screenshot>
<para>Подсказка: слева от имени кодека может отображаться значёк настроек, как показано на рисунке для кодека GIMP XCF. Это означает, что данный кодек может быть настроен для работы с различными параметрами. Например, для кодека GIMP XCF можно настроить цвет фона для прозрачных изображений.</para>
</sect2>
</sect1>
</chapter>