通过 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?)