Merge pull request #113 from 5ohue/composite

CompositeOperator type
This commit is contained in:
Nathan Fiedler
2023-11-18 07:52:07 -08:00
committed by GitHub
4 changed files with 288 additions and 11 deletions

View File

@ -28,7 +28,7 @@ use {size_t, ssize_t};
use crate::result::Result;
use super::{DrawingWand, PixelWand};
use super::{CompositeOperator, DrawingWand, PixelWand};
wand_common!(
MagickWand,
@ -232,11 +232,24 @@ impl MagickWand {
(distortion, wand)
}
pub fn get_image_compose(&self) -> CompositeOperator {
unsafe { bindings::MagickGetImageCompose(self.wand).into() }
}
pub fn set_image_compose(&self, composite_operator: CompositeOperator) -> Result<()> {
match unsafe { bindings::MagickSetImageCompose(self.wand, composite_operator.into()) } {
bindings::MagickBooleanType_MagickTrue => Ok(()),
_ => Err(MagickError(
"Failed to set the image composite operator type",
)),
}
}
/// Compose another image onto self at (x, y) using composition_operator
pub fn compose_images(
&self,
reference: &MagickWand,
composition_operator: bindings::CompositeOperator,
composition_operator: CompositeOperator,
clip_to_self: bool,
x: isize,
y: isize,
@ -250,7 +263,7 @@ impl MagickWand {
bindings::MagickCompositeImage(
self.wand,
reference.wand,
composition_operator,
composition_operator.into(),
native_clip_to_self,
x,
y,
@ -266,14 +279,14 @@ impl MagickWand {
pub fn compose_images_gravity(
&self,
reference: &MagickWand,
composition_operator: bindings::CompositeOperator,
composition_operator: CompositeOperator,
gravity_type: bindings::GravityType,
) -> Result<()> {
let result = unsafe {
bindings::MagickCompositeImageGravity(
self.wand,
reference.wand,
composition_operator,
composition_operator.into(),
gravity_type,
)
};
@ -973,10 +986,10 @@ impl MagickWand {
pixel_wand: &PixelWand,
width: usize,
height: usize,
compose: bindings::CompositeOperator,
compose: CompositeOperator,
) -> Result<()> {
match unsafe {
bindings::MagickBorderImage(self.wand, pixel_wand.wand, width, height, compose)
bindings::MagickBorderImage(self.wand, pixel_wand.wand, width, height, compose.into())
} {
bindings::MagickBooleanType_MagickTrue => Ok(()),
@ -1110,7 +1123,6 @@ impl MagickWand {
get_compression_quality, set_compression_quality, MagickGetCompressionQuality, MagickSetCompressionQuality, size_t
get_gravity, set_gravity, MagickGetGravity, MagickSetGravity, bindings::GravityType
get_image_colorspace, set_image_colorspace, MagickGetImageColorspace, MagickSetImageColorspace, bindings::ColorspaceType
get_image_compose, set_image_compose, MagickGetImageCompose, MagickSetImageCompose, bindings::CompositeOperator
get_image_compression, set_image_compression, MagickGetImageCompression, MagickSetImageCompression, bindings::CompressionType
get_image_compression_quality, set_image_compression_quality, MagickGetImageCompressionQuality, MagickSetImageCompressionQuality, size_t
get_image_delay, set_image_delay, MagickGetImageDelay, MagickSetImageDelay, size_t