diff options
Diffstat (limited to 'doc/ru/internals.docbook')
-rw-r--r-- | doc/ru/internals.docbook | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/doc/ru/internals.docbook b/doc/ru/internals.docbook new file mode 100644 index 0000000..0e66b22 --- /dev/null +++ b/doc/ru/internals.docbook @@ -0,0 +1,71 @@ +<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> |