Skip to content

Commit

Permalink
Fixup adding interpolate
Browse files Browse the repository at this point in the history
  • Loading branch information
rolandlo committed Mar 20, 2024
1 parent 7d66ef5 commit 1f9ea3b
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 3 deletions.
3 changes: 2 additions & 1 deletion lua-vips-1.1-10.rockspec
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ build = {
["vips.vobject"] = "src/vips/vobject.lua",
["vips.voperation"] = "src/vips/voperation.lua",
["vips.Image"] = "src/vips/Image.lua",
["vips.Image_methods"] = "src/vips/Image_methods.lua"
["vips.Image_methods"] = "src/vips/Image_methods.lua",
["vips.Interpolate"] = "src/vips/Interpolate.lua"
}
}
2 changes: 1 addition & 1 deletion src/vips.lua
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ local vips = {
vobject = require "vips.vobject",
voperation = require "vips.voperation",
Image = require "vips.Image_methods",
Image = require "vips.Interpolate",
Interpolate = require "vips.Interpolate",
}

function vips.leak_set(leak)
Expand Down
2 changes: 1 addition & 1 deletion src/vips/Interpolate.lua
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Interpolate.new_from_name = function(name)
return Interpolate.new(interpolate)
end

return ffi.metatype("Interpolate", {
return ffi.metatype("VipsInterpolate", {
__index = Interpolate
})

Expand Down
6 changes: 6 additions & 0 deletions src/vips/cdefs.lua
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,12 @@ ffi.cdef [[
// opaque
} VipsOperation;

typedef struct _VipsInterpolate {
VipsObject parent_instance;

// opaque
} VipsInterpolate;

VipsInterpolate *vips_interpolate_new (const char *name);

VipsOperation *vips_operation_new (const char *name);
Expand Down
7 changes: 7 additions & 0 deletions src/vips/gvalue.lua
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ gvalue.int_arr_typeof = ffi.typeof("const int[?]")
gvalue.double_arr_typeof = ffi.typeof("const double[?]")
gvalue.psize_typeof = ffi.typeof("size_t[?]")
gvalue.mem_typeof = ffi.typeof("unsigned char[?]")
gvalue.interpolate_typeof = ffi.typeof("VipsInterpolate*")

-- look up some common gtypes at init for speed
gvalue.gbool_type = gobject_lib.g_type_from_name("gboolean")
Expand All @@ -55,6 +56,7 @@ gvalue.refstr_type = gobject_lib.g_type_from_name("VipsRefString")
gvalue.blob_type = gobject_lib.g_type_from_name("VipsBlob")
gvalue.band_format_type = gobject_lib.g_type_from_name("VipsBandFormat")
gvalue.blend_mode_type = version.at_least(8, 6) and gobject_lib.g_type_from_name("VipsBlendMode") or 0
gvalue.interpolate_type = gobject_lib.g_type_from_name("VipsInterpolate")

gvalue.to_enum = function(gtype, value)
-- turn a string into an int, ready to be passed into libvips
Expand Down Expand Up @@ -149,6 +151,8 @@ gvalue.set = function(gv, value)
else
vips_lib.vips_value_set_blob(gv, glib_lib.g_free, buf, n)
end
elseif gtype == gvalue.interpolate_type then
gobject_lib.g_value_set_object(gv, value)
else
error("unsupported gtype for set " .. gvalue.type_name(gtype_raw))
end
Expand Down Expand Up @@ -243,6 +247,9 @@ gvalue.get = function(gv)
local array = vips_lib.vips_value_get_blob(gv, psize)

result = ffi.string(array, tonumber(psize[0]))
elseif gtype == gvalue.interpolate_type then
local vo = gobject_lib.g_value_get_object(gv)
result = ffi.cast(gvalue.interpolate_typeof, vo)
else
error("unsupported gtype for get " .. gvalue.type_name(gtype_raw))
end
Expand Down

0 comments on commit 1f9ea3b

Please sign in to comment.