结构
GdkPixbufPixbufModule
描述 [src]
struct GdkPixbufModule {
char* module_name;
char* module_path;
GModule* module;
GdkPixbufFormat* info;
GdkPixbufModuleLoadFunc load;
GdkPixbufModuleLoadXpmDataFunc load_xpm_data;
GdkPixbufModuleBeginLoadFunc begin_load;
GdkPixbufModuleStopLoadFunc stop_load;
GdkPixbufModuleIncrementLoadFunc load_increment;
GdkPixbufModuleLoadAnimationFunc load_animation;
GdkPixbufModuleSaveFunc save;
GdkPixbufModuleSaveCallbackFunc save_to_callback;
GdkPixbufModuleSaveOptionSupportedFunc is_save_option_supported;
void (* _reserved1) (
void
);;
void (* _reserved2) (
void
);;
void (* _reserved3) (
void
);;
void (* _reserved4) (
void
);;
}
GdkPixbufModule
包含在特定文件格式中加载和保存图像所需的必要函数。
如果 GdkPixbuf
已使用 GModule
支持进行了编译,则可以通过可以加载(或许还可以保存)图像和动画新格式的模块来对其进行扩展。
实现模块
实现模块所需的 GdkPixbuf
接口包含在 gdk-pixbuf-io.h
中(如果模块支持动画,则还包括在 gdk-pixbuf-animation.h
中)。它们不受与常规 GdkPixbuf API 相同的稳定性保证的约束。为突出这一事实,它们受 GDK_PIXBUF_ENABLE_BACKEND
预处理器符号的保护。
每个可加载模块都必须包含一个名为 fill_vtable
的 GdkPixbufModuleFillVtableFunc
函数,该函数将在加载模块时被调用,并且必须设置 GdkPixbufModule
的函数指针。
为了在实际加载模块(可能需要调用 dlopen
来加载图像库)之前进行格式检查,模块通过 fill_info
函数导出其签名(和其他信息)。外部实用程序 gdk-pixbuf-query-loaders
使用它来创建包含所有可用加载程序及其签名的文本文件。然后,GdkPixbuf
在运行时读取该文件,以获取可用加载程序及其签名的列表。
模块只能实现通过 GdkPixbufModule
提供的部分功能。如果未实现特定功能,则 fill_vtable
函数将不会设置 GdkPixbufModule
结构的相应函数指针。如果模块支持增量加载(即提供 begin_load
、stop_load
和 load_increment
),则它不必实现 load
,因为 GdkPixbuf
可以提供包装增量加载的通用 load
实现。
安装模块
安装模块是一个两步过程
- 将模块文件复制到加载程序目录(通常是
$libdir/gdk-pixbuf-2.0/$version/loaders
,除非被环境变量GDK_PIXBUF_MODULEDIR
覆盖) - 调用
gdk-pixbuf-query-loaders
来更新模块文件(通常是$libdir/gdk-pixbuf-2.0/$version/loaders.cache
,除非被环境变量GDK_PIXBUF_MODULE_FILE
覆盖)。
结构成员
module_name
模块的名称,通常与此类型图像的常用文件扩展名相同,例如“xpm”、“jpeg”或“png”。
module_path
加载模块所依据的路径。
module
已加载的
GModule
。info
保存有关模块信息的
GdkPixbufFormat
。load
从文件加载图像。
load_xpm_data
从内存中的数据加载图像。
begin_load
开始增量加载。
stop_load
停止增量加载。
load_increment
继续增量加载。
load_animation
从文件加载动画。
save
将
GdkPixbuf
保存到文件。save_to_callback
通过调用给定的
GdkPixbufSaveFunc
来保存GdkPixbuf
。is_save_option_supported
返回模块是否支持保存选项键。
_reserved1
无可用描述。
_reserved2
无可用描述。
_reserved3
无可用描述。
_reserved4
无可用描述。