@@ -39,6 +39,7 @@ gvalue.int_arr_typeof = ffi.typeof("const int[?]")
3939gvalue .double_arr_typeof = ffi .typeof (" const double[?]" )
4040gvalue .psize_typeof = ffi .typeof (" size_t[?]" )
4141gvalue .mem_typeof = ffi .typeof (" unsigned char[?]" )
42+ gvalue .interpolate_typeof = ffi .typeof (" VipsInterpolate*" )
4243
4344-- look up some common gtypes at init for speed
4445gvalue .gbool_type = gobject_lib .g_type_from_name (" gboolean" )
@@ -55,6 +56,7 @@ gvalue.refstr_type = gobject_lib.g_type_from_name("VipsRefString")
5556gvalue .blob_type = gobject_lib .g_type_from_name (" VipsBlob" )
5657gvalue .band_format_type = gobject_lib .g_type_from_name (" VipsBandFormat" )
5758gvalue .blend_mode_type = version .at_least (8 , 6 ) and gobject_lib .g_type_from_name (" VipsBlendMode" ) or 0
59+ gvalue .interpolate_type = gobject_lib .g_type_from_name (" VipsInterpolate" )
5860
5961-- gvalue.*_type can be of type cdata or number depending on the OS and Lua version
6062-- gtypes as returned by vips_lib can also be of type cdata or number
@@ -155,6 +157,8 @@ gvalue.set = function(gv, value)
155157 else
156158 vips_lib .vips_value_set_blob (gv , glib_lib .g_free , buf , n )
157159 end
160+ elseif gtype_comp == gvalue .interpolate_type then
161+ gobject_lib .g_value_set_object (gv , value )
158162 else
159163 error (" unsupported gtype for set " .. gvalue .type_name (gtype ))
160164 end
@@ -249,6 +253,9 @@ gvalue.get = function(gv)
249253 local array = vips_lib .vips_value_get_blob (gv , psize )
250254
251255 result = ffi .string (array , tonumber (psize [0 ]))
256+ elseif gtype_comp == gvalue .interpolate_type then
257+ local vo = gobject_lib .g_value_get_object (gv )
258+ result = ffi .cast (gvalue .interpolate_typeof , vo )
252259 else
253260 error (" unsupported gtype for get " .. gvalue .type_name (gtype ))
254261 end
0 commit comments