From aad7aa56c34f607c520626abaf40686302dfbfba Mon Sep 17 00:00:00 2001 From: Trurl McByte Date: Tue, 18 Dec 2018 00:32:39 +0200 Subject: [PATCH 1/4] pretest --- magick/wand/image.lua | 22 ++++++++++++++++++++-- magick/wand/image.moon | 14 ++++++++++++-- magick/wand/lib.lua | 5 +++++ magick/wand/lib.moon | 5 +++++ 4 files changed, 42 insertions(+), 4 deletions(-) diff --git a/magick/wand/image.lua b/magick/wand/image.lua index 21a1d19..bc7ec88 100644 --- a/magick/wand/image.lua +++ b/magick/wand/image.lua @@ -163,15 +163,33 @@ do } return unpack(res) end, - composite = function(self, blob, x, y, op) + composite = function(self, blob, x, y, op, clip_to_self) if op == nil then op = "OverCompositeOp" end + if clip_to_self == nil then + clip_to_self = true + end if type(blob) == "table" and blob.__class == Image then blob = blob.wand end op = assert(composite_operators:to_int(op), "invalid operator type") - return handle_result(self, lib.MagickCompositeImage(self.wand, blob, op, x, y)) + return handle_result(self, lib.MagickCompositeImage(self.wand, blob, op, clip_to_self, x, y)) + end, + composite_gravity = function(self, blob, op, gtype) + if op == nil then + op = "OverCompositeOp" + end + if gtype == nil then + gtype = "NorthWestGravity" + end + if type(blob) == "table" and blob.__class == Image then + blob = blob.wand + end + op = assert(composite_operators:to_int(op), "invalid operator type") + gtype = assert(gravity:to_int(gtype), "invalid gravity type") + + return handle_result(self, lib.MagickCompositeImageGravity(self.wand, blob, op, gtype)) end, get_blob = function(self) local len = ffi.new("size_t[1]", 0) diff --git a/magick/wand/image.moon b/magick/wand/image.moon index f8fc2dd..bd44cf3 100644 --- a/magick/wand/image.moon +++ b/magick/wand/image.moon @@ -129,13 +129,23 @@ class Image extends require "magick.base_image" res = { handle_result @, lib.MagickRotateImage @wand, pixel, degrees } unpack res - composite: (blob, x, y, op="OverCompositeOp") => + composite: (blob, x, y, op="OverCompositeOp", clip_to_self=true) => if type(blob) == "table" and blob.__class == Image blob = blob.wand op = assert composite_operators\to_int(op), "invalid operator type" handle_result @, - lib.MagickCompositeImage @wand, blob, op, x, y + lib.MagickCompositeImage @wand, blob, op, clip_to_self, x, y + + composite_gravity: (blob, op="OverCompositeOp", gtype="NorthWestGravity") => + if type(blob) == "table" and blob.__class == Image + blob = blob.wand + + op = assert composite_operators\to_int(op), "invalid operator type" + gtype = assert gravity:to_int(gtype), "invalid gravity type" + + handle_result @, + lib.MagickCompositeImageGravity @wand, blob, op, gtype get_blob: => len = ffi.new "size_t[1]", 0 diff --git a/magick/wand/lib.lua b/magick/wand/lib.lua index d5ab763..2cf3070 100644 --- a/magick/wand/lib.lua +++ b/magick/wand/lib.lua @@ -61,8 +61,13 @@ ffi.cdef([[ typedef void MagickWand; MagickBooleanType MagickCompositeImage(MagickWand *wand, const MagickWand *source_wand,const CompositeOperator compose, + const MagickBooleanType clip_to_self, const ssize_t x,const ssize_t y); + MagickBooleanType MagickCompositeImageGravity(MagickWand *wand, + const MagickWand *source_wand,const CompositeOperator compose, + const GravityType gravity) + GravityType MagickGetImageGravity(MagickWand *wand); MagickBooleanType MagickSetImageGravity(MagickWand *wand, const GravityType gravity); diff --git a/magick/wand/lib.moon b/magick/wand/lib.moon index 9f4cc48..a10a502 100644 --- a/magick/wand/lib.moon +++ b/magick/wand/lib.moon @@ -65,8 +65,13 @@ ffi.cdef [[ MagickBooleanType MagickCompositeImage(MagickWand *wand, const MagickWand *source_wand,const CompositeOperator compose, + const MagickBooleanType clip_to_self, const ssize_t x,const ssize_t y); + MagickBooleanType MagickCompositeImageGravity(MagickWand *wand, + const MagickWand *source_wand,const CompositeOperator compose, + const GravityType gravity) + GravityType MagickGetImageGravity(MagickWand *wand); MagickBooleanType MagickSetImageGravity(MagickWand *wand, const GravityType gravity); From 843b12685d39698f6c1c1d8cbc29a68e5e10d2c0 Mon Sep 17 00:00:00 2001 From: Trurl McByte Date: Tue, 18 Dec 2018 00:47:12 +0200 Subject: [PATCH 2/4] postbuild --- magick/wand/image.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/magick/wand/image.lua b/magick/wand/image.lua index bc7ec88..aab9027 100644 --- a/magick/wand/image.lua +++ b/magick/wand/image.lua @@ -187,8 +187,9 @@ do blob = blob.wand end op = assert(composite_operators:to_int(op), "invalid operator type") - gtype = assert(gravity:to_int(gtype), "invalid gravity type") - + gtype = assert({ + gravity = to_int(gtype) + }, "invalid gravity type") return handle_result(self, lib.MagickCompositeImageGravity(self.wand, blob, op, gtype)) end, get_blob = function(self) From 0e48801939fde05c609d1101eb7c4f005d9e617a Mon Sep 17 00:00:00 2001 From: Trurl McByte Date: Tue, 18 Dec 2018 00:59:32 +0200 Subject: [PATCH 3/4] fix --- magick/wand/lib.lua | 2 +- magick/wand/lib.moon | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/magick/wand/lib.lua b/magick/wand/lib.lua index 2cf3070..c163656 100644 --- a/magick/wand/lib.lua +++ b/magick/wand/lib.lua @@ -66,7 +66,7 @@ ffi.cdef([[ typedef void MagickWand; MagickBooleanType MagickCompositeImageGravity(MagickWand *wand, const MagickWand *source_wand,const CompositeOperator compose, - const GravityType gravity) + const GravityType gravity); GravityType MagickGetImageGravity(MagickWand *wand); MagickBooleanType MagickSetImageGravity(MagickWand *wand, diff --git a/magick/wand/lib.moon b/magick/wand/lib.moon index a10a502..979b74b 100644 --- a/magick/wand/lib.moon +++ b/magick/wand/lib.moon @@ -70,7 +70,7 @@ ffi.cdef [[ MagickBooleanType MagickCompositeImageGravity(MagickWand *wand, const MagickWand *source_wand,const CompositeOperator compose, - const GravityType gravity) + const GravityType gravity); GravityType MagickGetImageGravity(MagickWand *wand); MagickBooleanType MagickSetImageGravity(MagickWand *wand, From b946c7ee8832f1b9461154336ae15cb77b28cd0f Mon Sep 17 00:00:00 2001 From: Trurl McByte Date: Tue, 18 Dec 2018 01:09:56 +0200 Subject: [PATCH 4/4] fix2 --- magick/wand/image.lua | 4 +--- magick/wand/image.moon | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/magick/wand/image.lua b/magick/wand/image.lua index aab9027..6717af1 100644 --- a/magick/wand/image.lua +++ b/magick/wand/image.lua @@ -187,9 +187,7 @@ do blob = blob.wand end op = assert(composite_operators:to_int(op), "invalid operator type") - gtype = assert({ - gravity = to_int(gtype) - }, "invalid gravity type") + gtype = assert(gravity:to_int(gtype), "invalid gravity type") return handle_result(self, lib.MagickCompositeImageGravity(self.wand, blob, op, gtype)) end, get_blob = function(self) diff --git a/magick/wand/image.moon b/magick/wand/image.moon index bd44cf3..477f0a0 100644 --- a/magick/wand/image.moon +++ b/magick/wand/image.moon @@ -142,7 +142,7 @@ class Image extends require "magick.base_image" blob = blob.wand op = assert composite_operators\to_int(op), "invalid operator type" - gtype = assert gravity:to_int(gtype), "invalid gravity type" + gtype = assert gravity\to_int(gtype), "invalid gravity type" handle_result @, lib.MagickCompositeImageGravity @wand, blob, op, gtype