0

通过 GI(GObject 内省)公开的一些 Gimp 方法需要一个 GValue,其值是一个浮点数的 GArray。在 Python 中,我可以创建一个 float 的 array.array 并期望 PyGObject 将其正确编组为 GArray 吗?(松散地说,指向浮点数的指针和数组中元素的整数计数。)

具体来说,Gimp 2.99(开发分支)在其 API 中有:

@accepts(GObject.Value, float, gsize)
@returns(none)
def value_set_float_array(value, array, length):
    # Python wrapper for gimp_value_set_float_array()

IOW 它真的期望一个地址(指针)指向内存中连续的许多浮点数的第一个浮点数,一个“数组”。如果在 Python 中创建一个包含四个浮点数的 array.array,并将其作为第二个参数传递给 Gimp.value_set_float_array(),那么 PyGObject 会做正确的事吗?

我知道我可以尝试一下,或者阅读 PyGObject 代码。但即使我可以让它工作,我相信如果 Gimp API 有一个接受 GArray 的 GValue 构造函数(或另一个 Gimp 类型 Gimp.FloatArray 的构造函数),它可能会更好。然后我的理解是 PyGObject 会自动将 Python 的浮点数列表编组为 GArray。换句话说,我的问题是关于 GObject 自省 API 架构的指导。

Gimp 支持其他绑定,例如 Lua 和 Scheme。在我看来,Gimp 应该支持 GArray 参数,这可能会支持所有绑定。

(问题源于尝试使用 Gimp.FloatArray 类型,它似乎不是 GObject。也许问题更大,Gimp 应该基于 GObject 的 Gimp.FloatArray?)

4

1 回答 1

0

相信它可以工作,您只需要使用(element-type float)文档中的注释:https ://wiki.gnome.org/Projects/GObjectIntrospection/Annotations

于 2020-02-25T07:02:03.700 回答