Skip to content

Commit d06996b

Browse files
committed
Fixup adding interpolate
1 parent 65359c0 commit d06996b

File tree

5 files changed

+17
-3
lines changed

5 files changed

+17
-3
lines changed

lua-vips-1.1-10.rockspec

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ build = {
3333
["vips.vobject"] = "src/vips/vobject.lua",
3434
["vips.voperation"] = "src/vips/voperation.lua",
3535
["vips.Image"] = "src/vips/Image.lua",
36-
["vips.Image_methods"] = "src/vips/Image_methods.lua"
36+
["vips.Image_methods"] = "src/vips/Image_methods.lua",
37+
["vips.Interpolate"] = "src/vips/Interpolate.lua"
3738
}
3839
}

src/vips.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ local vips = {
2222
vobject = require "vips.vobject",
2323
voperation = require "vips.voperation",
2424
Image = require "vips.Image_methods",
25-
Image = require "vips.Interpolate",
25+
Interpolate = require "vips.Interpolate",
2626
}
2727

2828
function vips.leak_set(leak)

src/vips/Interpolate.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Interpolate.new_from_name = function(name)
2727
return Interpolate.new(interpolate)
2828
end
2929

30-
return ffi.metatype("Interpolate", {
30+
return ffi.metatype("VipsInterpolate", {
3131
__index = Interpolate
3232
})
3333

src/vips/cdefs.lua

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,12 @@ ffi.cdef [[
188188
// opaque
189189
} VipsOperation;
190190

191+
typedef struct _VipsInterpolate {
192+
VipsObject parent_instance;
193+
194+
// opaque
195+
} VipsInterpolate;
196+
191197
VipsInterpolate *vips_interpolate_new (const char *name);
192198

193199
VipsOperation *vips_operation_new (const char *name);

src/vips/gvalue.lua

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ gvalue.int_arr_typeof = ffi.typeof("const int[?]")
3939
gvalue.double_arr_typeof = ffi.typeof("const double[?]")
4040
gvalue.psize_typeof = ffi.typeof("size_t[?]")
4141
gvalue.mem_typeof = ffi.typeof("unsigned char[?]")
42+
gvalue.interpolate_typeof = ffi.typeof("VipsInterpolate*")
4243

4344
-- look up some common gtypes at init for speed
4445
gvalue.gbool_type = gobject_lib.g_type_from_name("gboolean")
@@ -55,6 +56,7 @@ gvalue.refstr_type = gobject_lib.g_type_from_name("VipsRefString")
5556
gvalue.blob_type = gobject_lib.g_type_from_name("VipsBlob")
5657
gvalue.band_format_type = gobject_lib.g_type_from_name("VipsBandFormat")
5758
gvalue.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

Comments
 (0)