LINUX.ORG.RU

Как узнать с поддержкой каких модулей собран GTK+?


0

0

GTK+ способен загружать изображения в ряде форматов: png, bmp, gif, ico, ani, jpeg, pnm, ras, tiff, xpm, xbm, tga, pcx, wmf, emf... Будет ли тулкит собран с их поддержкой, зависит от опций конфигурации.

Как в уже собранном тулките узнать с поддержкой каких форматов он собран?

★★★★★

ls -1 /usr/lib/gtk-2.0/2.10.0/loaders

io-wmf.so
libpixbufloader-ani.so
libpixbufloader-bmp.so
libpixbufloader-gif.so
libpixbufloader-icns.so
libpixbufloader-ico.so
libpixbufloader-jasper.so
libpixbufloader-jpeg.so
libpixbufloader-pcx.so
libpixbufloader-png.so
libpixbufloader-pnm.so
libpixbufloader-ras.so
libpixbufloader-tga.so
libpixbufloader-tiff.so
libpixbufloader-wbmp.so
libpixbufloader-xbm.so
libpixbufloader-xpm.so
svg_loader.so




Demon37 ★★★★
()
Ответ на: комментарий от Demon37

> ls -1 /usr/lib/gtk-2.0/2.10.0/loaders

Спасибо.

Тогда следующий вопрос: io-wmf.* и libpixbufloader-pnm.* в списке присутствуют, но gtk_image_new_from_file() соответствующие файлы не воспринимает. Куда копать?

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

Попробуй тогда сначала загрузить файл вот так:

GdkPixbuf * gdk_pixbuf_new_from_file (const char *filename, GError **error);

А потом отрисовать его на виджете вот так:

GtkWidget * gtk_image_new_from_pixbuf (GdkPixbuf *pixbuf);

Можно и ошибочки отследить.

Demon37 ★★★★
()

> pkg_info -r gtk-2.16.1
Information for gtk-2.16.1:

Depends on:
Dependency: xineramaproto-1.1.2
Dependency: xf86vidmodeproto-2.2.2
Dependency: xextproto-7.0.5
Dependency: renderproto-0.9.3
Dependency: randrproto-1.3.0
Dependency: kbproto-1.0.3
Dependency: inputproto-1.5.0
Dependency: fixesproto-4.0
Dependency: dri2proto-2.0
Dependency: damageproto-1.1.0_2
Dependency: compositeproto-0.4
Dependency: font-util-1.0.1
Dependency: encodings-1.0.2,1
Dependency: expat-2.0.1
Dependency: hicolor-icon-theme-0.10_2
Dependency: python25-2.5.4_1
Dependency: xcb-proto-1.4
Dependency: perl-5.10.0_2
Dependency: png-1.2.35
Dependency: jpeg-6b_7
Dependency: tiff-3.8.2_3
Dependency: pkg-config-0.23_1
Dependency: xproto-7.0.15
Dependency: pixman-0.15.4
Dependency: libfontenc-1.0.4
Dependency: libXdmcp-1.0.2_1
Dependency: libXau-1.0.4
Dependency: libICE-1.0.4_1,1
Dependency: libSM-1.1.0_1,1
Dependency: freetype2-2.3.9_1
Dependency: mkfontscale-1.0.6
Dependency: mkfontdir-1.0.4
Dependency: fontconfig-2.6.0,1
Dependency: font-misc-meltho-1.0.0_1
Dependency: font-misc-ethiopic-1.0.0
Dependency: font-bh-ttf-1.0.0
Dependency: bitstream-vera-1.10_4
Dependency: xorg-fonts-truetype-7.4
Dependency: pcre-7.9
Dependency: libpthread-stubs-0.1
Dependency: libxcb-1.2_1
Dependency: xcb-util-0.3.4
Dependency: libdrm-2.4.11
Dependency: libX11-1.2.1,1
Dependency: libXt-1.0.5_1
Dependency: libXrender-0.9.4_1
Dependency: libXft-2.1.13
Dependency: libXfixes-4.0.3_1
Dependency: libXext-1.0.5,1
Dependency: libXxf86vm-1.0.2
Dependency: libXrandr-1.3.0
Dependency: libXmu-1.0.4,1
Dependency: libXinerama-1.0.3,1
Dependency: libXi-1.2.1,1
Dependency: libXdamage-1.1.1
Dependency: libXcursor-1.1.9_1
Dependency: libXcomposite-0.4.0,1
Dependency: libGL-7.4.2_1
Dependency: libGLU-7.4.2_1
Dependency: libglut-7.4.2_1
Dependency: jasper-1.900.1_7
Dependency: glitz-0.5.6_2
Dependency: cairo-1.8.6_1,1
Dependency: icu-3.8.1_2
Dependency: libiconv-1.11_1
Dependency: libxml2-2.7.3
Dependency: gettext-0.17_1
Dependency: glib-2.20.2
Dependency: gamin-0.1.10_2
Dependency: gio-fam-backend-2.20.2
Dependency: shared-mime-info-0.60_1
Dependency: pango-1.24.2
Dependency: atk-1.26.0

> uname -rsm
FreeBSD 7.2-STABLE amd64

iZEN ★★★★★
()
Ответ на: комментарий от Demon37

> ls -1 /usr/local/lib/gtk-2.0/2.10.0/loaders/
./
../
libopenraw_pixbuf.a
libopenraw_pixbuf.la*
libopenraw_pixbuf.so*
libpixbufloader-ani.a
libpixbufloader-ani.la*
libpixbufloader-ani.so*
libpixbufloader-bmp.a
libpixbufloader-bmp.la*
libpixbufloader-bmp.so*
libpixbufloader-gif.a
libpixbufloader-gif.la*
libpixbufloader-gif.so*
libpixbufloader-icns.a
libpixbufloader-icns.la*
libpixbufloader-icns.so*
libpixbufloader-ico.a
libpixbufloader-ico.la*
libpixbufloader-ico.so*
libpixbufloader-jasper.a
libpixbufloader-jasper.la*
libpixbufloader-jasper.so*
libpixbufloader-jpeg.a
libpixbufloader-jpeg.la*
libpixbufloader-jpeg.so*
libpixbufloader-pcx.a
libpixbufloader-pcx.la*
libpixbufloader-pcx.so*
libpixbufloader-png.a
libpixbufloader-png.la*
libpixbufloader-png.so*
libpixbufloader-pnm.a
libpixbufloader-pnm.la*
libpixbufloader-pnm.so*
libpixbufloader-ras.a
libpixbufloader-ras.la*
libpixbufloader-ras.so*
libpixbufloader-tga.a
libpixbufloader-tga.la*
libpixbufloader-tga.so*
libpixbufloader-tiff.a
libpixbufloader-tiff.la*
libpixbufloader-tiff.so*
libpixbufloader-wbmp.a
libpixbufloader-wbmp.la*
libpixbufloader-wbmp.so*
libpixbufloader-xbm.a
libpixbufloader-xbm.la*
libpixbufloader-xbm.so*
libpixbufloader-xpm.a
libpixbufloader-xpm.la*
libpixbufloader-xpm.so*
svg_loader.a
svg_loader.la*
svg_loader.so*

iZEN ★★★★★
()
Ответ на: комментарий от true_admin

> gtk-config

Нет, он только выдаёт переключатели для gcc, как pkg-config. (Но, вроде, немного умнее.)

question4 ★★★★★
() автор топика
Ответ на: комментарий от k_andy

> gdk_pixbuf_get_formats

Спасибо.

Написал:
list=gdk_pixbuf_get_formats(); 
while ( list!=NULL ) {
    printf("%s, ", gdk_pixbuf_format_get_name ( (GdkPixbufFormat*)(list->data) ) ); 
    list=list->next;
}

Получил строку
png, gif, ico, ani, ras, xpm, pnm, bmp, wbmp, xbm, tga, pcx, jpeg, tiff, svg, wmf, icns, jpeg2000,

Получается (как и из списка библиотек), должны поддерживаться. 

question4 ★★★★★
() автор топика
Ответ на: комментарий от Demon37

> Попробуй тогда сначала загрузить файл вот так:

> GdkPixbuf * gdk_pixbuf_new_from_file (const char *filename, GError **error);

> А потом отрисовать его на виджете вот так:

> GtkWidget * gtk_image_new_from_pixbuf (GdkPixbuf *pixbuf);

> Можно и ошибочки отследить.

Спасибо.

Заменил
picture = gtk_image_new_from_file(filename);
на
pixbuffer = gdk_pixbuf_new_from_file(filename, errorcode);
if (errorcode == NULL) {
    printf("Opened file without errors\n");
} else {
    do {
        printf("%s \n", errorcode[ccv]->message);
        ccv++;
    } while (errorcode[ccv]!=NULL);
}
picture = gtk_image_new_from_pixbuf(pixbuffer);

В результате заработали ранее не показывавшиеся PNM-файлы с расширениями ppm, pgm, pbm и pnm (с идентичным содержимым). Тот же файл с расширением pam не выдаёт ошибок (errorcode==NULL), но и не показывается. На WMF/EMF ошибок тоже не выдаёт и тоже ничего не показывает.

Куда копать дальше?

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

>В результате заработали ранее не показывавшиеся PNM-файлы с расширениями ppm, pgm, pbm и pnm (с идентичным содержимым). Тот же файл с расширением pam не выдаёт ошибок (errorcode==NULL), но и не показывается. На WMF/EMF ошибок тоже не выдаёт и тоже ничего не показывает.

Только что проверил у себя -- WMF/EMF отрисовывается. Вероятно, копать надо в направлении либо обновления, либо отката к старой версии GTK. Возможно есть какой-то баг в GDK.

Demon37 ★★★★
()
Ответ на: комментарий от Demon37

> Только что проверил у себя -- WMF/EMF отрисовывается. Вероятно, копать надо в направлении либо обновления, либо отката к старой версии GTK. Возможно есть какой-то баг в GDK.

Спасибо. У меня версия 2.14.7. Доступны 2.12.11 и 2.16.1. Попробую.

question4 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.