From 3b0377d94af7603ca69c04719ea276d6b901ee4f Mon Sep 17 00:00:00 2001 From: 5ohue <86558263+5ohue@users.noreply.github.com> Date: Thu, 16 Nov 2023 21:43:26 +0300 Subject: [PATCH 1/5] Add compositeOperator type --- src/lib.rs | 4 +- src/wand/composite_operator.rs | 322 +++++++++++++++++++++++++++++++++ src/wand/magick.rs | 14 +- src/wand/mod.rs | 2 + 4 files changed, 332 insertions(+), 10 deletions(-) create mode 100644 src/wand/composite_operator.rs diff --git a/src/lib.rs b/src/lib.rs index 4cffebd..32fbc30 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -36,9 +36,7 @@ use libc::size_t; #[cfg(not(target_os = "freebsd"))] use libc::ssize_t; -pub use bindings::{ - ColorspaceType, CompositeOperator, DitherMethod, FilterType, GravityType, MetricType, -}; +pub use bindings::{ColorspaceType, DitherMethod, FilterType, GravityType, MetricType}; pub use conversions::ToMagick; pub use result::MagickError; use result::Result; diff --git a/src/wand/composite_operator.rs b/src/wand/composite_operator.rs new file mode 100644 index 0000000..359528e --- /dev/null +++ b/src/wand/composite_operator.rs @@ -0,0 +1,322 @@ +pub enum CompositeOperator { + UndefinedCompositeOp, + AlphaCompositeOp, + AtopCompositeOp, + BlendCompositeOp, + BlurCompositeOp, + BumpmapCompositeOp, + ChangeMaskCompositeOp, + ClearCompositeOp, + ColorBurnCompositeOp, + ColorDodgeCompositeOp, + ColorizeCompositeOp, + CopyBlackCompositeOp, + CopyBlueCompositeOp, + CopyCompositeOp, + CopyCyanCompositeOp, + CopyGreenCompositeOp, + CopyMagentaCompositeOp, + CopyAlphaCompositeOp, + CopyRedCompositeOp, + CopyYellowCompositeOp, + DarkenCompositeOp, + DarkenIntensityCompositeOp, + DifferenceCompositeOp, + DisplaceCompositeOp, + DissolveCompositeOp, + DistortCompositeOp, + DivideDstCompositeOp, + DivideSrcCompositeOp, + DstAtopCompositeOp, + DstCompositeOp, + DstInCompositeOp, + DstOutCompositeOp, + DstOverCompositeOp, + ExclusionCompositeOp, + HardLightCompositeOp, + HardMixCompositeOp, + HueCompositeOp, + InCompositeOp, + IntensityCompositeOp, + LightenCompositeOp, + LightenIntensityCompositeOp, + LinearBurnCompositeOp, + LinearDodgeCompositeOp, + LinearLightCompositeOp, + LuminizeCompositeOp, + MathematicsCompositeOp, + MinusDstCompositeOp, + MinusSrcCompositeOp, + ModulateCompositeOp, + ModulusAddCompositeOp, + ModulusSubtractCompositeOp, + MultiplyCompositeOp, + NoCompositeOp, + OutCompositeOp, + OverCompositeOp, + OverlayCompositeOp, + PegtopLightCompositeOp, + PinLightCompositeOp, + PlusCompositeOp, + ReplaceCompositeOp, + SaturateCompositeOp, + ScreenCompositeOp, + SoftLightCompositeOp, + SrcAtopCompositeOp, + SrcCompositeOp, + SrcInCompositeOp, + SrcOutCompositeOp, + SrcOverCompositeOp, + ThresholdCompositeOp, + VividLightCompositeOp, + XorCompositeOp, + StereoCompositeOp, + FreezeCompositeOp, + InterpolateCompositeOp, + NegateCompositeOp, + ReflectCompositeOp, + SoftBurnCompositeOp, + SoftDodgeCompositeOp, + StampCompositeOp, + RMSECompositeOp, + SaliencyBlendCompositeOp, + SeamlessBlendCompositeOp, +} + +impl From for crate::bindings::CompositeOperator { + fn from(value: CompositeOperator) -> Self { + match value { + CompositeOperator::UndefinedCompositeOp => { + crate::bindings::CompositeOperator_UndefinedCompositeOp + } + CompositeOperator::AlphaCompositeOp => { + crate::bindings::CompositeOperator_AlphaCompositeOp + } + CompositeOperator::AtopCompositeOp => { + crate::bindings::CompositeOperator_AtopCompositeOp + } + CompositeOperator::BlendCompositeOp => { + crate::bindings::CompositeOperator_BlendCompositeOp + } + CompositeOperator::BlurCompositeOp => { + crate::bindings::CompositeOperator_BlurCompositeOp + } + CompositeOperator::BumpmapCompositeOp => { + crate::bindings::CompositeOperator_BumpmapCompositeOp + } + CompositeOperator::ChangeMaskCompositeOp => { + crate::bindings::CompositeOperator_ChangeMaskCompositeOp + } + CompositeOperator::ClearCompositeOp => { + crate::bindings::CompositeOperator_ClearCompositeOp + } + CompositeOperator::ColorBurnCompositeOp => { + crate::bindings::CompositeOperator_ColorBurnCompositeOp + } + CompositeOperator::ColorDodgeCompositeOp => { + crate::bindings::CompositeOperator_ColorDodgeCompositeOp + } + CompositeOperator::ColorizeCompositeOp => { crate::bindings::CompositeOperator_ColorizeCompositeOp + } + CompositeOperator::CopyBlackCompositeOp => { + crate::bindings::CompositeOperator_CopyBlackCompositeOp + } + CompositeOperator::CopyBlueCompositeOp => { + crate::bindings::CompositeOperator_CopyBlueCompositeOp + } + CompositeOperator::CopyCompositeOp => { + crate::bindings::CompositeOperator_CopyCompositeOp + } + CompositeOperator::CopyCyanCompositeOp => { + crate::bindings::CompositeOperator_CopyCyanCompositeOp + } + CompositeOperator::CopyGreenCompositeOp => { + crate::bindings::CompositeOperator_CopyGreenCompositeOp + } + CompositeOperator::CopyMagentaCompositeOp => { + crate::bindings::CompositeOperator_CopyMagentaCompositeOp + } + CompositeOperator::CopyAlphaCompositeOp => { + crate::bindings::CompositeOperator_CopyAlphaCompositeOp + } + CompositeOperator::CopyRedCompositeOp => { + crate::bindings::CompositeOperator_CopyRedCompositeOp + } + CompositeOperator::CopyYellowCompositeOp => { + crate::bindings::CompositeOperator_CopyYellowCompositeOp + } + CompositeOperator::DarkenCompositeOp => { + crate::bindings::CompositeOperator_DarkenCompositeOp + } + CompositeOperator::DarkenIntensityCompositeOp => { + crate::bindings::CompositeOperator_DarkenIntensityCompositeOp + } + CompositeOperator::DifferenceCompositeOp => { + crate::bindings::CompositeOperator_DifferenceCompositeOp + } + CompositeOperator::DisplaceCompositeOp => { + crate::bindings::CompositeOperator_DisplaceCompositeOp + } + CompositeOperator::DissolveCompositeOp => { + crate::bindings::CompositeOperator_DissolveCompositeOp + } + CompositeOperator::DistortCompositeOp => { + crate::bindings::CompositeOperator_DistortCompositeOp + } + CompositeOperator::DivideDstCompositeOp => { + crate::bindings::CompositeOperator_DivideDstCompositeOp + } + CompositeOperator::DivideSrcCompositeOp => { + crate::bindings::CompositeOperator_DivideSrcCompositeOp + } + CompositeOperator::DstAtopCompositeOp => { + crate::bindings::CompositeOperator_DstAtopCompositeOp + } + CompositeOperator::DstCompositeOp => crate::bindings::CompositeOperator_DstCompositeOp, + CompositeOperator::DstInCompositeOp => { + crate::bindings::CompositeOperator_DstInCompositeOp + } + CompositeOperator::DstOutCompositeOp => { + crate::bindings::CompositeOperator_DstOutCompositeOp + } + CompositeOperator::DstOverCompositeOp => { + crate::bindings::CompositeOperator_DstOverCompositeOp + } + CompositeOperator::ExclusionCompositeOp => { + crate::bindings::CompositeOperator_ExclusionCompositeOp + } + CompositeOperator::HardLightCompositeOp => { + crate::bindings::CompositeOperator_HardLightCompositeOp + } + CompositeOperator::HardMixCompositeOp => { + crate::bindings::CompositeOperator_HardMixCompositeOp + } + CompositeOperator::HueCompositeOp => crate::bindings::CompositeOperator_HueCompositeOp, + CompositeOperator::InCompositeOp => crate::bindings::CompositeOperator_InCompositeOp, + CompositeOperator::IntensityCompositeOp => { + crate::bindings::CompositeOperator_IntensityCompositeOp + } + CompositeOperator::LightenCompositeOp => { + crate::bindings::CompositeOperator_LightenCompositeOp + } + CompositeOperator::LightenIntensityCompositeOp => { + crate::bindings::CompositeOperator_LightenIntensityCompositeOp + } + CompositeOperator::LinearBurnCompositeOp => { + crate::bindings::CompositeOperator_LinearBurnCompositeOp + } + CompositeOperator::LinearDodgeCompositeOp => { + crate::bindings::CompositeOperator_LinearDodgeCompositeOp + } + CompositeOperator::LinearLightCompositeOp => { + crate::bindings::CompositeOperator_LinearLightCompositeOp + } + CompositeOperator::LuminizeCompositeOp => { + crate::bindings::CompositeOperator_LuminizeCompositeOp + } + CompositeOperator::MathematicsCompositeOp => { + crate::bindings::CompositeOperator_MathematicsCompositeOp + } + CompositeOperator::MinusDstCompositeOp => { + crate::bindings::CompositeOperator_MinusDstCompositeOp + } + CompositeOperator::MinusSrcCompositeOp => { + crate::bindings::CompositeOperator_MinusSrcCompositeOp + } + CompositeOperator::ModulateCompositeOp => { + crate::bindings::CompositeOperator_ModulateCompositeOp + } + CompositeOperator::ModulusAddCompositeOp => { + crate::bindings::CompositeOperator_ModulusAddCompositeOp + } + CompositeOperator::ModulusSubtractCompositeOp => { + crate::bindings::CompositeOperator_ModulusSubtractCompositeOp + } + CompositeOperator::MultiplyCompositeOp => { + crate::bindings::CompositeOperator_MultiplyCompositeOp + } + CompositeOperator::NoCompositeOp => crate::bindings::CompositeOperator_NoCompositeOp, + CompositeOperator::OutCompositeOp => crate::bindings::CompositeOperator_OutCompositeOp, + CompositeOperator::OverCompositeOp => { + crate::bindings::CompositeOperator_OverCompositeOp + } + CompositeOperator::OverlayCompositeOp => { + crate::bindings::CompositeOperator_OverlayCompositeOp + } + CompositeOperator::PegtopLightCompositeOp => { + crate::bindings::CompositeOperator_PegtopLightCompositeOp + } + CompositeOperator::PinLightCompositeOp => { + crate::bindings::CompositeOperator_PinLightCompositeOp + } + CompositeOperator::PlusCompositeOp => { + crate::bindings::CompositeOperator_PlusCompositeOp + } + CompositeOperator::ReplaceCompositeOp => { + crate::bindings::CompositeOperator_ReplaceCompositeOp + } + CompositeOperator::SaturateCompositeOp => { + crate::bindings::CompositeOperator_SaturateCompositeOp + } + CompositeOperator::ScreenCompositeOp => { + crate::bindings::CompositeOperator_ScreenCompositeOp + } + CompositeOperator::SoftLightCompositeOp => { + crate::bindings::CompositeOperator_SoftLightCompositeOp + } + CompositeOperator::SrcAtopCompositeOp => { + crate::bindings::CompositeOperator_SrcAtopCompositeOp + } + CompositeOperator::SrcCompositeOp => crate::bindings::CompositeOperator_SrcCompositeOp, + CompositeOperator::SrcInCompositeOp => { + crate::bindings::CompositeOperator_SrcInCompositeOp + } + CompositeOperator::SrcOutCompositeOp => { + crate::bindings::CompositeOperator_SrcOutCompositeOp + } + CompositeOperator::SrcOverCompositeOp => { + crate::bindings::CompositeOperator_SrcOverCompositeOp + } + CompositeOperator::ThresholdCompositeOp => { + crate::bindings::CompositeOperator_ThresholdCompositeOp + } + CompositeOperator::VividLightCompositeOp => { + crate::bindings::CompositeOperator_VividLightCompositeOp + } + CompositeOperator::XorCompositeOp => crate::bindings::CompositeOperator_XorCompositeOp, + CompositeOperator::StereoCompositeOp => { + crate::bindings::CompositeOperator_StereoCompositeOp + } + CompositeOperator::FreezeCompositeOp => { + crate::bindings::CompositeOperator_FreezeCompositeOp + } + CompositeOperator::InterpolateCompositeOp => { + crate::bindings::CompositeOperator_InterpolateCompositeOp + } + CompositeOperator::NegateCompositeOp => { + crate::bindings::CompositeOperator_NegateCompositeOp + } + CompositeOperator::ReflectCompositeOp => { + crate::bindings::CompositeOperator_ReflectCompositeOp + } + CompositeOperator::SoftBurnCompositeOp => { + crate::bindings::CompositeOperator_SoftBurnCompositeOp + } + CompositeOperator::SoftDodgeCompositeOp => { + crate::bindings::CompositeOperator_SoftDodgeCompositeOp + } + CompositeOperator::StampCompositeOp => { + crate::bindings::CompositeOperator_StampCompositeOp + } + CompositeOperator::RMSECompositeOp => { + crate::bindings::CompositeOperator_RMSECompositeOp + } + CompositeOperator::SaliencyBlendCompositeOp => { + crate::bindings::CompositeOperator_SaliencyBlendCompositeOp + } + CompositeOperator::SeamlessBlendCompositeOp => { + crate::bindings::CompositeOperator_SeamlessBlendCompositeOp + } + } + } +} diff --git a/src/wand/magick.rs b/src/wand/magick.rs index 54d4185..593d4d7 100644 --- a/src/wand/magick.rs +++ b/src/wand/magick.rs @@ -28,7 +28,7 @@ use {size_t, ssize_t}; use crate::result::Result; -use super::{DrawingWand, PixelWand}; +use super::{DrawingWand, PixelWand, CompositeOperator}; wand_common!( MagickWand, @@ -236,7 +236,7 @@ impl MagickWand { pub fn compose_images( &self, reference: &MagickWand, - composition_operator: bindings::CompositeOperator, + composition_operator: CompositeOperator, clip_to_self: bool, x: isize, y: isize, @@ -250,7 +250,7 @@ impl MagickWand { bindings::MagickCompositeImage( self.wand, reference.wand, - composition_operator, + composition_operator.into(), native_clip_to_self, x, y, @@ -266,14 +266,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, ) }; @@ -949,10 +949,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(()), diff --git a/src/wand/mod.rs b/src/wand/mod.rs index 2cf9201..1e40284 100644 --- a/src/wand/mod.rs +++ b/src/wand/mod.rs @@ -15,10 +15,12 @@ */ #[macro_use] mod macros; +mod composite_operator; mod drawing; mod magick; mod pixel; +pub use self::composite_operator::CompositeOperator; pub use self::drawing::DrawingWand; pub use self::magick::{MagickWand, ResourceType}; pub use self::pixel::{PixelWand, HSL}; From 163cef7f52e1809fedf38aeae7b33882cc13a6c1 Mon Sep 17 00:00:00 2001 From: 5ohue <86558263+5ohue@users.noreply.github.com> Date: Thu, 16 Nov 2023 21:48:03 +0300 Subject: [PATCH 2/5] Rename composite operator enum names --- src/wand/composite_operator.rs | 439 ++++++++++++--------------------- 1 file changed, 164 insertions(+), 275 deletions(-) diff --git a/src/wand/composite_operator.rs b/src/wand/composite_operator.rs index 359528e..810fec6 100644 --- a/src/wand/composite_operator.rs +++ b/src/wand/composite_operator.rs @@ -1,320 +1,209 @@ pub enum CompositeOperator { - UndefinedCompositeOp, - AlphaCompositeOp, - AtopCompositeOp, - BlendCompositeOp, - BlurCompositeOp, - BumpmapCompositeOp, - ChangeMaskCompositeOp, - ClearCompositeOp, - ColorBurnCompositeOp, - ColorDodgeCompositeOp, - ColorizeCompositeOp, - CopyBlackCompositeOp, - CopyBlueCompositeOp, - CopyCompositeOp, - CopyCyanCompositeOp, - CopyGreenCompositeOp, - CopyMagentaCompositeOp, - CopyAlphaCompositeOp, - CopyRedCompositeOp, - CopyYellowCompositeOp, - DarkenCompositeOp, - DarkenIntensityCompositeOp, - DifferenceCompositeOp, - DisplaceCompositeOp, - DissolveCompositeOp, - DistortCompositeOp, - DivideDstCompositeOp, - DivideSrcCompositeOp, - DstAtopCompositeOp, - DstCompositeOp, - DstInCompositeOp, - DstOutCompositeOp, - DstOverCompositeOp, - ExclusionCompositeOp, - HardLightCompositeOp, - HardMixCompositeOp, - HueCompositeOp, - InCompositeOp, - IntensityCompositeOp, - LightenCompositeOp, - LightenIntensityCompositeOp, - LinearBurnCompositeOp, - LinearDodgeCompositeOp, - LinearLightCompositeOp, - LuminizeCompositeOp, - MathematicsCompositeOp, - MinusDstCompositeOp, - MinusSrcCompositeOp, - ModulateCompositeOp, - ModulusAddCompositeOp, - ModulusSubtractCompositeOp, - MultiplyCompositeOp, - NoCompositeOp, - OutCompositeOp, - OverCompositeOp, - OverlayCompositeOp, - PegtopLightCompositeOp, - PinLightCompositeOp, - PlusCompositeOp, - ReplaceCompositeOp, - SaturateCompositeOp, - ScreenCompositeOp, - SoftLightCompositeOp, - SrcAtopCompositeOp, - SrcCompositeOp, - SrcInCompositeOp, - SrcOutCompositeOp, - SrcOverCompositeOp, - ThresholdCompositeOp, - VividLightCompositeOp, - XorCompositeOp, - StereoCompositeOp, - FreezeCompositeOp, - InterpolateCompositeOp, - NegateCompositeOp, - ReflectCompositeOp, - SoftBurnCompositeOp, - SoftDodgeCompositeOp, - StampCompositeOp, - RMSECompositeOp, - SaliencyBlendCompositeOp, - SeamlessBlendCompositeOp, + Undefined, + Alpha, + Atop, + Blend, + Blur, + Bumpmap, + ChangeMask, + Clear, + ColorBurn, + ColorDodge, + Colorize, + CopyBlack, + CopyBlue, + Copy, + CopyCyan, + CopyGreen, + CopyMagenta, + CopyAlpha, + CopyRed, + CopyYellow, + Darken, + DarkenIntensity, + Difference, + Displace, + Dissolve, + Distort, + DivideDst, + DivideSrc, + DstAtop, + Dst, + DstIn, + DstOut, + DstOver, + Exclusion, + HardLight, + HardMix, + Hue, + In, + Intensity, + Lighten, + LightenIntensity, + LinearBurn, + LinearDodge, + LinearLight, + Luminize, + Mathematics, + MinusDst, + MinusSrc, + Modulate, + ModulusAdd, + ModulusSubtract, + Multiply, + No, + Out, + Over, + Overlay, + PegtopLight, + PinLight, + Plus, + Replace, + Saturate, + Screen, + SoftLight, + SrcAtop, + Src, + SrcIn, + SrcOut, + SrcOver, + Threshold, + VividLight, + Xor, + Stereo, + Freeze, + Interpolate, + Negate, + Reflect, + SoftBurn, + SoftDodge, + Stamp, + RMSE, + SaliencyBlend, + SeamlessBlend, } impl From for crate::bindings::CompositeOperator { fn from(value: CompositeOperator) -> Self { match value { - CompositeOperator::UndefinedCompositeOp => { - crate::bindings::CompositeOperator_UndefinedCompositeOp - } - CompositeOperator::AlphaCompositeOp => { - crate::bindings::CompositeOperator_AlphaCompositeOp - } - CompositeOperator::AtopCompositeOp => { - crate::bindings::CompositeOperator_AtopCompositeOp - } - CompositeOperator::BlendCompositeOp => { - crate::bindings::CompositeOperator_BlendCompositeOp - } - CompositeOperator::BlurCompositeOp => { - crate::bindings::CompositeOperator_BlurCompositeOp - } - CompositeOperator::BumpmapCompositeOp => { - crate::bindings::CompositeOperator_BumpmapCompositeOp - } - CompositeOperator::ChangeMaskCompositeOp => { + CompositeOperator::Undefined => crate::bindings::CompositeOperator_UndefinedCompositeOp, + CompositeOperator::Alpha => crate::bindings::CompositeOperator_AlphaCompositeOp, + CompositeOperator::Atop => crate::bindings::CompositeOperator_AtopCompositeOp, + CompositeOperator::Blend => crate::bindings::CompositeOperator_BlendCompositeOp, + CompositeOperator::Blur => crate::bindings::CompositeOperator_BlurCompositeOp, + CompositeOperator::Bumpmap => crate::bindings::CompositeOperator_BumpmapCompositeOp, + CompositeOperator::ChangeMask => { crate::bindings::CompositeOperator_ChangeMaskCompositeOp } - CompositeOperator::ClearCompositeOp => { - crate::bindings::CompositeOperator_ClearCompositeOp - } - CompositeOperator::ColorBurnCompositeOp => { - crate::bindings::CompositeOperator_ColorBurnCompositeOp - } - CompositeOperator::ColorDodgeCompositeOp => { + CompositeOperator::Clear => crate::bindings::CompositeOperator_ClearCompositeOp, + CompositeOperator::ColorBurn => crate::bindings::CompositeOperator_ColorBurnCompositeOp, + CompositeOperator::ColorDodge => { crate::bindings::CompositeOperator_ColorDodgeCompositeOp } - CompositeOperator::ColorizeCompositeOp => { crate::bindings::CompositeOperator_ColorizeCompositeOp - } - CompositeOperator::CopyBlackCompositeOp => { + CompositeOperator::Colorize => crate::bindings::CompositeOperator_ColorizeCompositeOp, + CompositeOperator::CopyBlack=> { crate::bindings::CompositeOperator_CopyBlackCompositeOp } - CompositeOperator::CopyBlueCompositeOp => { - crate::bindings::CompositeOperator_CopyBlueCompositeOp - } - CompositeOperator::CopyCompositeOp => { - crate::bindings::CompositeOperator_CopyCompositeOp - } - CompositeOperator::CopyCyanCompositeOp => { - crate::bindings::CompositeOperator_CopyCyanCompositeOp - } - CompositeOperator::CopyGreenCompositeOp => { - crate::bindings::CompositeOperator_CopyGreenCompositeOp - } - CompositeOperator::CopyMagentaCompositeOp => { + CompositeOperator::CopyBlue => crate::bindings::CompositeOperator_CopyBlueCompositeOp, + CompositeOperator::Copy => crate::bindings::CompositeOperator_CopyCompositeOp, + CompositeOperator::CopyCyan => crate::bindings::CompositeOperator_CopyCyanCompositeOp, + CompositeOperator::CopyGreen => crate::bindings::CompositeOperator_CopyGreenCompositeOp, + CompositeOperator::CopyMagenta => { crate::bindings::CompositeOperator_CopyMagentaCompositeOp } - CompositeOperator::CopyAlphaCompositeOp => { - crate::bindings::CompositeOperator_CopyAlphaCompositeOp - } - CompositeOperator::CopyRedCompositeOp => { - crate::bindings::CompositeOperator_CopyRedCompositeOp - } - CompositeOperator::CopyYellowCompositeOp => { + CompositeOperator::CopyAlpha => crate::bindings::CompositeOperator_CopyAlphaCompositeOp, + CompositeOperator::CopyRed => crate::bindings::CompositeOperator_CopyRedCompositeOp, + CompositeOperator::CopyYellow => { crate::bindings::CompositeOperator_CopyYellowCompositeOp } - CompositeOperator::DarkenCompositeOp => { - crate::bindings::CompositeOperator_DarkenCompositeOp - } - CompositeOperator::DarkenIntensityCompositeOp => { + CompositeOperator::Darken => crate::bindings::CompositeOperator_DarkenCompositeOp, + CompositeOperator::DarkenIntensity => { crate::bindings::CompositeOperator_DarkenIntensityCompositeOp } - CompositeOperator::DifferenceCompositeOp => { + CompositeOperator::Difference => { crate::bindings::CompositeOperator_DifferenceCompositeOp } - CompositeOperator::DisplaceCompositeOp => { - crate::bindings::CompositeOperator_DisplaceCompositeOp - } - CompositeOperator::DissolveCompositeOp => { - crate::bindings::CompositeOperator_DissolveCompositeOp - } - CompositeOperator::DistortCompositeOp => { - crate::bindings::CompositeOperator_DistortCompositeOp - } - CompositeOperator::DivideDstCompositeOp => { - crate::bindings::CompositeOperator_DivideDstCompositeOp - } - CompositeOperator::DivideSrcCompositeOp => { - crate::bindings::CompositeOperator_DivideSrcCompositeOp - } - CompositeOperator::DstAtopCompositeOp => { - crate::bindings::CompositeOperator_DstAtopCompositeOp - } - CompositeOperator::DstCompositeOp => crate::bindings::CompositeOperator_DstCompositeOp, - CompositeOperator::DstInCompositeOp => { - crate::bindings::CompositeOperator_DstInCompositeOp - } - CompositeOperator::DstOutCompositeOp => { - crate::bindings::CompositeOperator_DstOutCompositeOp - } - CompositeOperator::DstOverCompositeOp => { - crate::bindings::CompositeOperator_DstOverCompositeOp - } - CompositeOperator::ExclusionCompositeOp => { - crate::bindings::CompositeOperator_ExclusionCompositeOp - } - CompositeOperator::HardLightCompositeOp => { - crate::bindings::CompositeOperator_HardLightCompositeOp - } - CompositeOperator::HardMixCompositeOp => { - crate::bindings::CompositeOperator_HardMixCompositeOp - } - CompositeOperator::HueCompositeOp => crate::bindings::CompositeOperator_HueCompositeOp, - CompositeOperator::InCompositeOp => crate::bindings::CompositeOperator_InCompositeOp, - CompositeOperator::IntensityCompositeOp => { - crate::bindings::CompositeOperator_IntensityCompositeOp - } - CompositeOperator::LightenCompositeOp => { - crate::bindings::CompositeOperator_LightenCompositeOp - } - CompositeOperator::LightenIntensityCompositeOp => { + CompositeOperator::Displace => crate::bindings::CompositeOperator_DisplaceCompositeOp, + CompositeOperator::Dissolve => crate::bindings::CompositeOperator_DissolveCompositeOp, + CompositeOperator::Distort => crate::bindings::CompositeOperator_DistortCompositeOp, + CompositeOperator::DivideDst => crate::bindings::CompositeOperator_DivideDstCompositeOp, + CompositeOperator::DivideSrc => crate::bindings::CompositeOperator_DivideSrcCompositeOp, + CompositeOperator::DstAtop => crate::bindings::CompositeOperator_DstAtopCompositeOp, + CompositeOperator::Dst => crate::bindings::CompositeOperator_DstCompositeOp, + CompositeOperator::DstIn => crate::bindings::CompositeOperator_DstInCompositeOp, + CompositeOperator::DstOut => crate::bindings::CompositeOperator_DstOutCompositeOp, + CompositeOperator::DstOver => crate::bindings::CompositeOperator_DstOverCompositeOp, + CompositeOperator::Exclusion => crate::bindings::CompositeOperator_ExclusionCompositeOp, + CompositeOperator::HardLight => crate::bindings::CompositeOperator_HardLightCompositeOp, + CompositeOperator::HardMix => crate::bindings::CompositeOperator_HardMixCompositeOp, + CompositeOperator::Hue => crate::bindings::CompositeOperator_HueCompositeOp, + CompositeOperator::In => crate::bindings::CompositeOperator_InCompositeOp, + CompositeOperator::Intensity => crate::bindings::CompositeOperator_IntensityCompositeOp, + CompositeOperator::Lighten => crate::bindings::CompositeOperator_LightenCompositeOp, + CompositeOperator::LightenIntensity => { crate::bindings::CompositeOperator_LightenIntensityCompositeOp } - CompositeOperator::LinearBurnCompositeOp => { + CompositeOperator::LinearBurn => { crate::bindings::CompositeOperator_LinearBurnCompositeOp } - CompositeOperator::LinearDodgeCompositeOp => { + CompositeOperator::LinearDodge => { crate::bindings::CompositeOperator_LinearDodgeCompositeOp } - CompositeOperator::LinearLightCompositeOp => { + CompositeOperator::LinearLight => { crate::bindings::CompositeOperator_LinearLightCompositeOp } - CompositeOperator::LuminizeCompositeOp => { - crate::bindings::CompositeOperator_LuminizeCompositeOp - } - CompositeOperator::MathematicsCompositeOp => { + CompositeOperator::Luminize => crate::bindings::CompositeOperator_LuminizeCompositeOp, + CompositeOperator::Mathematics => { crate::bindings::CompositeOperator_MathematicsCompositeOp } - CompositeOperator::MinusDstCompositeOp => { - crate::bindings::CompositeOperator_MinusDstCompositeOp - } - CompositeOperator::MinusSrcCompositeOp => { - crate::bindings::CompositeOperator_MinusSrcCompositeOp - } - CompositeOperator::ModulateCompositeOp => { - crate::bindings::CompositeOperator_ModulateCompositeOp - } - CompositeOperator::ModulusAddCompositeOp => { + CompositeOperator::MinusDst => crate::bindings::CompositeOperator_MinusDstCompositeOp, + CompositeOperator::MinusSrc => crate::bindings::CompositeOperator_MinusSrcCompositeOp, + CompositeOperator::Modulate => crate::bindings::CompositeOperator_ModulateCompositeOp, + CompositeOperator::ModulusAdd => { crate::bindings::CompositeOperator_ModulusAddCompositeOp } - CompositeOperator::ModulusSubtractCompositeOp => { + CompositeOperator::ModulusSubtract => { crate::bindings::CompositeOperator_ModulusSubtractCompositeOp } - CompositeOperator::MultiplyCompositeOp => { - crate::bindings::CompositeOperator_MultiplyCompositeOp - } - CompositeOperator::NoCompositeOp => crate::bindings::CompositeOperator_NoCompositeOp, - CompositeOperator::OutCompositeOp => crate::bindings::CompositeOperator_OutCompositeOp, - CompositeOperator::OverCompositeOp => { - crate::bindings::CompositeOperator_OverCompositeOp - } - CompositeOperator::OverlayCompositeOp => { - crate::bindings::CompositeOperator_OverlayCompositeOp - } - CompositeOperator::PegtopLightCompositeOp => { + CompositeOperator::Multiply => crate::bindings::CompositeOperator_MultiplyCompositeOp, + CompositeOperator::No => crate::bindings::CompositeOperator_NoCompositeOp, + CompositeOperator::Out => crate::bindings::CompositeOperator_OutCompositeOp, + CompositeOperator::Over => crate::bindings::CompositeOperator_OverCompositeOp, + CompositeOperator::Overlay => crate::bindings::CompositeOperator_OverlayCompositeOp, + CompositeOperator::PegtopLight => { crate::bindings::CompositeOperator_PegtopLightCompositeOp } - CompositeOperator::PinLightCompositeOp => { - crate::bindings::CompositeOperator_PinLightCompositeOp - } - CompositeOperator::PlusCompositeOp => { - crate::bindings::CompositeOperator_PlusCompositeOp - } - CompositeOperator::ReplaceCompositeOp => { - crate::bindings::CompositeOperator_ReplaceCompositeOp - } - CompositeOperator::SaturateCompositeOp => { - crate::bindings::CompositeOperator_SaturateCompositeOp - } - CompositeOperator::ScreenCompositeOp => { - crate::bindings::CompositeOperator_ScreenCompositeOp - } - CompositeOperator::SoftLightCompositeOp => { - crate::bindings::CompositeOperator_SoftLightCompositeOp - } - CompositeOperator::SrcAtopCompositeOp => { - crate::bindings::CompositeOperator_SrcAtopCompositeOp - } - CompositeOperator::SrcCompositeOp => crate::bindings::CompositeOperator_SrcCompositeOp, - CompositeOperator::SrcInCompositeOp => { - crate::bindings::CompositeOperator_SrcInCompositeOp - } - CompositeOperator::SrcOutCompositeOp => { - crate::bindings::CompositeOperator_SrcOutCompositeOp - } - CompositeOperator::SrcOverCompositeOp => { - crate::bindings::CompositeOperator_SrcOverCompositeOp - } - CompositeOperator::ThresholdCompositeOp => { - crate::bindings::CompositeOperator_ThresholdCompositeOp - } - CompositeOperator::VividLightCompositeOp => { + CompositeOperator::PinLight => crate::bindings::CompositeOperator_PinLightCompositeOp, + CompositeOperator::Plus => crate::bindings::CompositeOperator_PlusCompositeOp, + CompositeOperator::Replace => crate::bindings::CompositeOperator_ReplaceCompositeOp, + CompositeOperator::Saturate => crate::bindings::CompositeOperator_SaturateCompositeOp, + CompositeOperator::Screen => crate::bindings::CompositeOperator_ScreenCompositeOp, + CompositeOperator::SoftLight => crate::bindings::CompositeOperator_SoftLightCompositeOp, + CompositeOperator::SrcAtop => crate::bindings::CompositeOperator_SrcAtopCompositeOp, + CompositeOperator::Src => crate::bindings::CompositeOperator_SrcCompositeOp, + CompositeOperator::SrcIn => crate::bindings::CompositeOperator_SrcInCompositeOp, + CompositeOperator::SrcOut => crate::bindings::CompositeOperator_SrcOutCompositeOp, + CompositeOperator::SrcOver => crate::bindings::CompositeOperator_SrcOverCompositeOp, + CompositeOperator::Threshold => crate::bindings::CompositeOperator_ThresholdCompositeOp, + CompositeOperator::VividLight => { crate::bindings::CompositeOperator_VividLightCompositeOp } - CompositeOperator::XorCompositeOp => crate::bindings::CompositeOperator_XorCompositeOp, - CompositeOperator::StereoCompositeOp => { - crate::bindings::CompositeOperator_StereoCompositeOp - } - CompositeOperator::FreezeCompositeOp => { - crate::bindings::CompositeOperator_FreezeCompositeOp - } - CompositeOperator::InterpolateCompositeOp => { + CompositeOperator::Xor => crate::bindings::CompositeOperator_XorCompositeOp, + CompositeOperator::Stereo => crate::bindings::CompositeOperator_StereoCompositeOp, + CompositeOperator::Freeze => crate::bindings::CompositeOperator_FreezeCompositeOp, + CompositeOperator::Interpolate => { crate::bindings::CompositeOperator_InterpolateCompositeOp } - CompositeOperator::NegateCompositeOp => { - crate::bindings::CompositeOperator_NegateCompositeOp - } - CompositeOperator::ReflectCompositeOp => { - crate::bindings::CompositeOperator_ReflectCompositeOp - } - CompositeOperator::SoftBurnCompositeOp => { - crate::bindings::CompositeOperator_SoftBurnCompositeOp - } - CompositeOperator::SoftDodgeCompositeOp => { - crate::bindings::CompositeOperator_SoftDodgeCompositeOp - } - CompositeOperator::StampCompositeOp => { - crate::bindings::CompositeOperator_StampCompositeOp - } - CompositeOperator::RMSECompositeOp => { - crate::bindings::CompositeOperator_RMSECompositeOp - } - CompositeOperator::SaliencyBlendCompositeOp => { + CompositeOperator::Negate => crate::bindings::CompositeOperator_NegateCompositeOp, + CompositeOperator::Reflect => crate::bindings::CompositeOperator_ReflectCompositeOp, + CompositeOperator::SoftBurn => crate::bindings::CompositeOperator_SoftBurnCompositeOp, + CompositeOperator::SoftDodge => crate::bindings::CompositeOperator_SoftDodgeCompositeOp, + CompositeOperator::Stamp => crate::bindings::CompositeOperator_StampCompositeOp, + CompositeOperator::RMSE => crate::bindings::CompositeOperator_RMSECompositeOp, + CompositeOperator::SaliencyBlend => { crate::bindings::CompositeOperator_SaliencyBlendCompositeOp } - CompositeOperator::SeamlessBlendCompositeOp => { + CompositeOperator::SeamlessBlend => { crate::bindings::CompositeOperator_SeamlessBlendCompositeOp } } From c00ce82a4c4b4fa179bca92e9b4aa59ce3afe564 Mon Sep 17 00:00:00 2001 From: 5ohue <86558263+5ohue@users.noreply.github.com> Date: Thu, 16 Nov 2023 21:55:07 +0300 Subject: [PATCH 3/5] Better looking aligned enum arms --- src/wand/composite_operator.rs | 203 ++++++++++++++------------------- 1 file changed, 83 insertions(+), 120 deletions(-) diff --git a/src/wand/composite_operator.rs b/src/wand/composite_operator.rs index 810fec6..9d92e1e 100644 --- a/src/wand/composite_operator.rs +++ b/src/wand/composite_operator.rs @@ -86,126 +86,89 @@ pub enum CompositeOperator { impl From for crate::bindings::CompositeOperator { fn from(value: CompositeOperator) -> Self { match value { - CompositeOperator::Undefined => crate::bindings::CompositeOperator_UndefinedCompositeOp, - CompositeOperator::Alpha => crate::bindings::CompositeOperator_AlphaCompositeOp, - CompositeOperator::Atop => crate::bindings::CompositeOperator_AtopCompositeOp, - CompositeOperator::Blend => crate::bindings::CompositeOperator_BlendCompositeOp, - CompositeOperator::Blur => crate::bindings::CompositeOperator_BlurCompositeOp, - CompositeOperator::Bumpmap => crate::bindings::CompositeOperator_BumpmapCompositeOp, - CompositeOperator::ChangeMask => { - crate::bindings::CompositeOperator_ChangeMaskCompositeOp - } - CompositeOperator::Clear => crate::bindings::CompositeOperator_ClearCompositeOp, - CompositeOperator::ColorBurn => crate::bindings::CompositeOperator_ColorBurnCompositeOp, - CompositeOperator::ColorDodge => { - crate::bindings::CompositeOperator_ColorDodgeCompositeOp - } - CompositeOperator::Colorize => crate::bindings::CompositeOperator_ColorizeCompositeOp, - CompositeOperator::CopyBlack=> { - crate::bindings::CompositeOperator_CopyBlackCompositeOp - } - CompositeOperator::CopyBlue => crate::bindings::CompositeOperator_CopyBlueCompositeOp, - CompositeOperator::Copy => crate::bindings::CompositeOperator_CopyCompositeOp, - CompositeOperator::CopyCyan => crate::bindings::CompositeOperator_CopyCyanCompositeOp, - CompositeOperator::CopyGreen => crate::bindings::CompositeOperator_CopyGreenCompositeOp, - CompositeOperator::CopyMagenta => { - crate::bindings::CompositeOperator_CopyMagentaCompositeOp - } - CompositeOperator::CopyAlpha => crate::bindings::CompositeOperator_CopyAlphaCompositeOp, - CompositeOperator::CopyRed => crate::bindings::CompositeOperator_CopyRedCompositeOp, - CompositeOperator::CopyYellow => { - crate::bindings::CompositeOperator_CopyYellowCompositeOp - } - CompositeOperator::Darken => crate::bindings::CompositeOperator_DarkenCompositeOp, - CompositeOperator::DarkenIntensity => { - crate::bindings::CompositeOperator_DarkenIntensityCompositeOp - } - CompositeOperator::Difference => { - crate::bindings::CompositeOperator_DifferenceCompositeOp - } - CompositeOperator::Displace => crate::bindings::CompositeOperator_DisplaceCompositeOp, - CompositeOperator::Dissolve => crate::bindings::CompositeOperator_DissolveCompositeOp, - CompositeOperator::Distort => crate::bindings::CompositeOperator_DistortCompositeOp, - CompositeOperator::DivideDst => crate::bindings::CompositeOperator_DivideDstCompositeOp, - CompositeOperator::DivideSrc => crate::bindings::CompositeOperator_DivideSrcCompositeOp, - CompositeOperator::DstAtop => crate::bindings::CompositeOperator_DstAtopCompositeOp, - CompositeOperator::Dst => crate::bindings::CompositeOperator_DstCompositeOp, - CompositeOperator::DstIn => crate::bindings::CompositeOperator_DstInCompositeOp, - CompositeOperator::DstOut => crate::bindings::CompositeOperator_DstOutCompositeOp, - CompositeOperator::DstOver => crate::bindings::CompositeOperator_DstOverCompositeOp, - CompositeOperator::Exclusion => crate::bindings::CompositeOperator_ExclusionCompositeOp, - CompositeOperator::HardLight => crate::bindings::CompositeOperator_HardLightCompositeOp, - CompositeOperator::HardMix => crate::bindings::CompositeOperator_HardMixCompositeOp, - CompositeOperator::Hue => crate::bindings::CompositeOperator_HueCompositeOp, - CompositeOperator::In => crate::bindings::CompositeOperator_InCompositeOp, - CompositeOperator::Intensity => crate::bindings::CompositeOperator_IntensityCompositeOp, - CompositeOperator::Lighten => crate::bindings::CompositeOperator_LightenCompositeOp, - CompositeOperator::LightenIntensity => { - crate::bindings::CompositeOperator_LightenIntensityCompositeOp - } - CompositeOperator::LinearBurn => { - crate::bindings::CompositeOperator_LinearBurnCompositeOp - } - CompositeOperator::LinearDodge => { - crate::bindings::CompositeOperator_LinearDodgeCompositeOp - } - CompositeOperator::LinearLight => { - crate::bindings::CompositeOperator_LinearLightCompositeOp - } - CompositeOperator::Luminize => crate::bindings::CompositeOperator_LuminizeCompositeOp, - CompositeOperator::Mathematics => { - crate::bindings::CompositeOperator_MathematicsCompositeOp - } - CompositeOperator::MinusDst => crate::bindings::CompositeOperator_MinusDstCompositeOp, - CompositeOperator::MinusSrc => crate::bindings::CompositeOperator_MinusSrcCompositeOp, - CompositeOperator::Modulate => crate::bindings::CompositeOperator_ModulateCompositeOp, - CompositeOperator::ModulusAdd => { - crate::bindings::CompositeOperator_ModulusAddCompositeOp - } - CompositeOperator::ModulusSubtract => { - crate::bindings::CompositeOperator_ModulusSubtractCompositeOp - } - CompositeOperator::Multiply => crate::bindings::CompositeOperator_MultiplyCompositeOp, - CompositeOperator::No => crate::bindings::CompositeOperator_NoCompositeOp, - CompositeOperator::Out => crate::bindings::CompositeOperator_OutCompositeOp, - CompositeOperator::Over => crate::bindings::CompositeOperator_OverCompositeOp, - CompositeOperator::Overlay => crate::bindings::CompositeOperator_OverlayCompositeOp, - CompositeOperator::PegtopLight => { - crate::bindings::CompositeOperator_PegtopLightCompositeOp - } - CompositeOperator::PinLight => crate::bindings::CompositeOperator_PinLightCompositeOp, - CompositeOperator::Plus => crate::bindings::CompositeOperator_PlusCompositeOp, - CompositeOperator::Replace => crate::bindings::CompositeOperator_ReplaceCompositeOp, - CompositeOperator::Saturate => crate::bindings::CompositeOperator_SaturateCompositeOp, - CompositeOperator::Screen => crate::bindings::CompositeOperator_ScreenCompositeOp, - CompositeOperator::SoftLight => crate::bindings::CompositeOperator_SoftLightCompositeOp, - CompositeOperator::SrcAtop => crate::bindings::CompositeOperator_SrcAtopCompositeOp, - CompositeOperator::Src => crate::bindings::CompositeOperator_SrcCompositeOp, - CompositeOperator::SrcIn => crate::bindings::CompositeOperator_SrcInCompositeOp, - CompositeOperator::SrcOut => crate::bindings::CompositeOperator_SrcOutCompositeOp, - CompositeOperator::SrcOver => crate::bindings::CompositeOperator_SrcOverCompositeOp, - CompositeOperator::Threshold => crate::bindings::CompositeOperator_ThresholdCompositeOp, - CompositeOperator::VividLight => { - crate::bindings::CompositeOperator_VividLightCompositeOp - } - CompositeOperator::Xor => crate::bindings::CompositeOperator_XorCompositeOp, - CompositeOperator::Stereo => crate::bindings::CompositeOperator_StereoCompositeOp, - CompositeOperator::Freeze => crate::bindings::CompositeOperator_FreezeCompositeOp, - CompositeOperator::Interpolate => { - crate::bindings::CompositeOperator_InterpolateCompositeOp - } - CompositeOperator::Negate => crate::bindings::CompositeOperator_NegateCompositeOp, - CompositeOperator::Reflect => crate::bindings::CompositeOperator_ReflectCompositeOp, - CompositeOperator::SoftBurn => crate::bindings::CompositeOperator_SoftBurnCompositeOp, - CompositeOperator::SoftDodge => crate::bindings::CompositeOperator_SoftDodgeCompositeOp, - CompositeOperator::Stamp => crate::bindings::CompositeOperator_StampCompositeOp, - CompositeOperator::RMSE => crate::bindings::CompositeOperator_RMSECompositeOp, - CompositeOperator::SaliencyBlend => { - crate::bindings::CompositeOperator_SaliencyBlendCompositeOp - } - CompositeOperator::SeamlessBlend => { - crate::bindings::CompositeOperator_SeamlessBlendCompositeOp - } + CompositeOperator::Undefined => crate::bindings::CompositeOperator_UndefinedCompositeOp, + CompositeOperator::Alpha => crate::bindings::CompositeOperator_AlphaCompositeOp, + CompositeOperator::Atop => crate::bindings::CompositeOperator_AtopCompositeOp, + CompositeOperator::Blend => crate::bindings::CompositeOperator_BlendCompositeOp, + CompositeOperator::Blur => crate::bindings::CompositeOperator_BlurCompositeOp, + CompositeOperator::Bumpmap => crate::bindings::CompositeOperator_BumpmapCompositeOp, + CompositeOperator::ChangeMask => crate::bindings::CompositeOperator_ChangeMaskCompositeOp, + CompositeOperator::Clear => crate::bindings::CompositeOperator_ClearCompositeOp, + CompositeOperator::ColorBurn => crate::bindings::CompositeOperator_ColorBurnCompositeOp, + CompositeOperator::ColorDodge => crate::bindings::CompositeOperator_ColorDodgeCompositeOp, + CompositeOperator::Colorize => crate::bindings::CompositeOperator_ColorizeCompositeOp, + CompositeOperator::CopyBlack => crate::bindings::CompositeOperator_CopyBlackCompositeOp, + CompositeOperator::CopyBlue => crate::bindings::CompositeOperator_CopyBlueCompositeOp, + CompositeOperator::Copy => crate::bindings::CompositeOperator_CopyCompositeOp, + CompositeOperator::CopyCyan => crate::bindings::CompositeOperator_CopyCyanCompositeOp, + CompositeOperator::CopyGreen => crate::bindings::CompositeOperator_CopyGreenCompositeOp, + CompositeOperator::CopyMagenta => crate::bindings::CompositeOperator_CopyMagentaCompositeOp, + CompositeOperator::CopyAlpha => crate::bindings::CompositeOperator_CopyAlphaCompositeOp, + CompositeOperator::CopyRed => crate::bindings::CompositeOperator_CopyRedCompositeOp, + CompositeOperator::CopyYellow => crate::bindings::CompositeOperator_CopyYellowCompositeOp, + CompositeOperator::Darken => crate::bindings::CompositeOperator_DarkenCompositeOp, + CompositeOperator::DarkenIntensity => crate::bindings::CompositeOperator_DarkenIntensityCompositeOp, + CompositeOperator::Difference => crate::bindings::CompositeOperator_DifferenceCompositeOp, + CompositeOperator::Displace => crate::bindings::CompositeOperator_DisplaceCompositeOp, + CompositeOperator::Dissolve => crate::bindings::CompositeOperator_DissolveCompositeOp, + CompositeOperator::Distort => crate::bindings::CompositeOperator_DistortCompositeOp, + CompositeOperator::DivideDst => crate::bindings::CompositeOperator_DivideDstCompositeOp, + CompositeOperator::DivideSrc => crate::bindings::CompositeOperator_DivideSrcCompositeOp, + CompositeOperator::DstAtop => crate::bindings::CompositeOperator_DstAtopCompositeOp, + CompositeOperator::Dst => crate::bindings::CompositeOperator_DstCompositeOp, + CompositeOperator::DstIn => crate::bindings::CompositeOperator_DstInCompositeOp, + CompositeOperator::DstOut => crate::bindings::CompositeOperator_DstOutCompositeOp, + CompositeOperator::DstOver => crate::bindings::CompositeOperator_DstOverCompositeOp, + CompositeOperator::Exclusion => crate::bindings::CompositeOperator_ExclusionCompositeOp, + CompositeOperator::HardLight => crate::bindings::CompositeOperator_HardLightCompositeOp, + CompositeOperator::HardMix => crate::bindings::CompositeOperator_HardMixCompositeOp, + CompositeOperator::Hue => crate::bindings::CompositeOperator_HueCompositeOp, + CompositeOperator::In => crate::bindings::CompositeOperator_InCompositeOp, + CompositeOperator::Intensity => crate::bindings::CompositeOperator_IntensityCompositeOp, + CompositeOperator::Lighten => crate::bindings::CompositeOperator_LightenCompositeOp, + CompositeOperator::LightenIntensity => crate::bindings::CompositeOperator_LightenIntensityCompositeOp, + CompositeOperator::LinearBurn => crate::bindings::CompositeOperator_LinearBurnCompositeOp, + CompositeOperator::LinearDodge => crate::bindings::CompositeOperator_LinearDodgeCompositeOp, + CompositeOperator::LinearLight => crate::bindings::CompositeOperator_LinearLightCompositeOp, + CompositeOperator::Luminize => crate::bindings::CompositeOperator_LuminizeCompositeOp, + CompositeOperator::Mathematics => crate::bindings::CompositeOperator_MathematicsCompositeOp, + CompositeOperator::MinusDst => crate::bindings::CompositeOperator_MinusDstCompositeOp, + CompositeOperator::MinusSrc => crate::bindings::CompositeOperator_MinusSrcCompositeOp, + CompositeOperator::Modulate => crate::bindings::CompositeOperator_ModulateCompositeOp, + CompositeOperator::ModulusAdd => crate::bindings::CompositeOperator_ModulusAddCompositeOp, + CompositeOperator::ModulusSubtract => crate::bindings::CompositeOperator_ModulusSubtractCompositeOp, + CompositeOperator::Multiply => crate::bindings::CompositeOperator_MultiplyCompositeOp, + CompositeOperator::No => crate::bindings::CompositeOperator_NoCompositeOp, + CompositeOperator::Out => crate::bindings::CompositeOperator_OutCompositeOp, + CompositeOperator::Over => crate::bindings::CompositeOperator_OverCompositeOp, + CompositeOperator::Overlay => crate::bindings::CompositeOperator_OverlayCompositeOp, + CompositeOperator::PegtopLight => crate::bindings::CompositeOperator_PegtopLightCompositeOp, + CompositeOperator::PinLight => crate::bindings::CompositeOperator_PinLightCompositeOp, + CompositeOperator::Plus => crate::bindings::CompositeOperator_PlusCompositeOp, + CompositeOperator::Replace => crate::bindings::CompositeOperator_ReplaceCompositeOp, + CompositeOperator::Saturate => crate::bindings::CompositeOperator_SaturateCompositeOp, + CompositeOperator::Screen => crate::bindings::CompositeOperator_ScreenCompositeOp, + CompositeOperator::SoftLight => crate::bindings::CompositeOperator_SoftLightCompositeOp, + CompositeOperator::SrcAtop => crate::bindings::CompositeOperator_SrcAtopCompositeOp, + CompositeOperator::Src => crate::bindings::CompositeOperator_SrcCompositeOp, + CompositeOperator::SrcIn => crate::bindings::CompositeOperator_SrcInCompositeOp, + CompositeOperator::SrcOut => crate::bindings::CompositeOperator_SrcOutCompositeOp, + CompositeOperator::SrcOver => crate::bindings::CompositeOperator_SrcOverCompositeOp, + CompositeOperator::Threshold => crate::bindings::CompositeOperator_ThresholdCompositeOp, + CompositeOperator::VividLight => crate::bindings::CompositeOperator_VividLightCompositeOp, + CompositeOperator::Xor => crate::bindings::CompositeOperator_XorCompositeOp, + CompositeOperator::Stereo => crate::bindings::CompositeOperator_StereoCompositeOp, + CompositeOperator::Freeze => crate::bindings::CompositeOperator_FreezeCompositeOp, + CompositeOperator::Interpolate => crate::bindings::CompositeOperator_InterpolateCompositeOp, + CompositeOperator::Negate => crate::bindings::CompositeOperator_NegateCompositeOp, + CompositeOperator::Reflect => crate::bindings::CompositeOperator_ReflectCompositeOp, + CompositeOperator::SoftBurn => crate::bindings::CompositeOperator_SoftBurnCompositeOp, + CompositeOperator::SoftDodge => crate::bindings::CompositeOperator_SoftDodgeCompositeOp, + CompositeOperator::Stamp => crate::bindings::CompositeOperator_StampCompositeOp, + CompositeOperator::RMSE => crate::bindings::CompositeOperator_RMSECompositeOp, + CompositeOperator::SaliencyBlend => crate::bindings::CompositeOperator_SaliencyBlendCompositeOp, + CompositeOperator::SeamlessBlend => crate::bindings::CompositeOperator_SeamlessBlendCompositeOp, + } } } From e1cefcdbe6fbd48930b86adeefd29413952eda27 Mon Sep 17 00:00:00 2001 From: 5ohue <86558263+5ohue@users.noreply.github.com> Date: Thu, 16 Nov 2023 22:16:33 +0300 Subject: [PATCH 4/5] fixed set/get for new CompositeOperator type --- src/wand/composite_operator.rs | 92 ++++++++++++++++++++++++++++++++++ src/wand/magick.rs | 16 +++++- 2 files changed, 106 insertions(+), 2 deletions(-) diff --git a/src/wand/composite_operator.rs b/src/wand/composite_operator.rs index 9d92e1e..ab9e7f8 100644 --- a/src/wand/composite_operator.rs +++ b/src/wand/composite_operator.rs @@ -1,3 +1,4 @@ +#[derive(Default, Debug, Clone, Copy)] pub enum CompositeOperator { Undefined, Alpha, @@ -53,6 +54,7 @@ pub enum CompositeOperator { Multiply, No, Out, + #[default] Over, Overlay, PegtopLight, @@ -172,3 +174,93 @@ impl From for crate::bindings::CompositeOperator { } } } + +impl From for CompositeOperator { + fn from(value: crate::bindings::CompositeOperator) -> Self { + match value { + crate::bindings::CompositeOperator_UndefinedCompositeOp => CompositeOperator::Undefined, + crate::bindings::CompositeOperator_AlphaCompositeOp => CompositeOperator::Alpha, + crate::bindings::CompositeOperator_AtopCompositeOp => CompositeOperator::Atop, + crate::bindings::CompositeOperator_BlendCompositeOp => CompositeOperator::Blend, + crate::bindings::CompositeOperator_BlurCompositeOp => CompositeOperator::Blur, + crate::bindings::CompositeOperator_BumpmapCompositeOp => CompositeOperator::Bumpmap, + crate::bindings::CompositeOperator_ChangeMaskCompositeOp => CompositeOperator::ChangeMask, + crate::bindings::CompositeOperator_ClearCompositeOp => CompositeOperator::Clear, + crate::bindings::CompositeOperator_ColorBurnCompositeOp => CompositeOperator::ColorBurn, + crate::bindings::CompositeOperator_ColorDodgeCompositeOp => CompositeOperator::ColorDodge, + crate::bindings::CompositeOperator_ColorizeCompositeOp => CompositeOperator::Colorize, + crate::bindings::CompositeOperator_CopyBlackCompositeOp => CompositeOperator::CopyBlack, + crate::bindings::CompositeOperator_CopyBlueCompositeOp => CompositeOperator::CopyBlue, + crate::bindings::CompositeOperator_CopyCompositeOp => CompositeOperator::Copy, + crate::bindings::CompositeOperator_CopyCyanCompositeOp => CompositeOperator::CopyCyan, + crate::bindings::CompositeOperator_CopyGreenCompositeOp => CompositeOperator::CopyGreen, + crate::bindings::CompositeOperator_CopyMagentaCompositeOp => CompositeOperator::CopyMagenta, + crate::bindings::CompositeOperator_CopyAlphaCompositeOp => CompositeOperator::CopyAlpha, + crate::bindings::CompositeOperator_CopyRedCompositeOp => CompositeOperator::CopyRed, + crate::bindings::CompositeOperator_CopyYellowCompositeOp => CompositeOperator::CopyYellow, + crate::bindings::CompositeOperator_DarkenCompositeOp => CompositeOperator::Darken, + crate::bindings::CompositeOperator_DarkenIntensityCompositeOp => CompositeOperator::DarkenIntensity, + crate::bindings::CompositeOperator_DifferenceCompositeOp => CompositeOperator::Difference, + crate::bindings::CompositeOperator_DisplaceCompositeOp => CompositeOperator::Displace, + crate::bindings::CompositeOperator_DissolveCompositeOp => CompositeOperator::Dissolve, + crate::bindings::CompositeOperator_DistortCompositeOp => CompositeOperator::Distort, + crate::bindings::CompositeOperator_DivideDstCompositeOp => CompositeOperator::DivideDst, + crate::bindings::CompositeOperator_DivideSrcCompositeOp => CompositeOperator::DivideSrc, + crate::bindings::CompositeOperator_DstAtopCompositeOp => CompositeOperator::DstAtop, + crate::bindings::CompositeOperator_DstCompositeOp => CompositeOperator::Dst, + crate::bindings::CompositeOperator_DstInCompositeOp => CompositeOperator::DstIn, + crate::bindings::CompositeOperator_DstOutCompositeOp => CompositeOperator::DstOut, + crate::bindings::CompositeOperator_DstOverCompositeOp => CompositeOperator::DstOver, + crate::bindings::CompositeOperator_ExclusionCompositeOp => CompositeOperator::Exclusion, + crate::bindings::CompositeOperator_HardLightCompositeOp => CompositeOperator::HardLight, + crate::bindings::CompositeOperator_HardMixCompositeOp => CompositeOperator::HardMix, + crate::bindings::CompositeOperator_HueCompositeOp => CompositeOperator::Hue, + crate::bindings::CompositeOperator_InCompositeOp => CompositeOperator::In, + crate::bindings::CompositeOperator_IntensityCompositeOp => CompositeOperator::Intensity, + crate::bindings::CompositeOperator_LightenCompositeOp => CompositeOperator::Lighten, + crate::bindings::CompositeOperator_LightenIntensityCompositeOp => CompositeOperator::LightenIntensity, + crate::bindings::CompositeOperator_LinearBurnCompositeOp => CompositeOperator::LinearBurn, + crate::bindings::CompositeOperator_LinearDodgeCompositeOp => CompositeOperator::LinearDodge, + crate::bindings::CompositeOperator_LinearLightCompositeOp => CompositeOperator::LinearLight, + crate::bindings::CompositeOperator_LuminizeCompositeOp => CompositeOperator::Luminize, + crate::bindings::CompositeOperator_MathematicsCompositeOp => CompositeOperator::Mathematics, + crate::bindings::CompositeOperator_MinusDstCompositeOp => CompositeOperator::MinusDst, + crate::bindings::CompositeOperator_MinusSrcCompositeOp => CompositeOperator::MinusSrc, + crate::bindings::CompositeOperator_ModulateCompositeOp => CompositeOperator::Modulate, + crate::bindings::CompositeOperator_ModulusAddCompositeOp => CompositeOperator::ModulusAdd, + crate::bindings::CompositeOperator_ModulusSubtractCompositeOp => CompositeOperator::ModulusSubtract, + crate::bindings::CompositeOperator_MultiplyCompositeOp => CompositeOperator::Multiply, + crate::bindings::CompositeOperator_NoCompositeOp => CompositeOperator::No, + crate::bindings::CompositeOperator_OutCompositeOp => CompositeOperator::Out, + crate::bindings::CompositeOperator_OverCompositeOp => CompositeOperator::Over, + crate::bindings::CompositeOperator_OverlayCompositeOp => CompositeOperator::Overlay, + crate::bindings::CompositeOperator_PegtopLightCompositeOp => CompositeOperator::PegtopLight, + crate::bindings::CompositeOperator_PinLightCompositeOp => CompositeOperator::PinLight, + crate::bindings::CompositeOperator_PlusCompositeOp => CompositeOperator::Plus, + crate::bindings::CompositeOperator_ReplaceCompositeOp => CompositeOperator::Replace, + crate::bindings::CompositeOperator_SaturateCompositeOp => CompositeOperator::Saturate, + crate::bindings::CompositeOperator_ScreenCompositeOp => CompositeOperator::Screen, + crate::bindings::CompositeOperator_SoftLightCompositeOp => CompositeOperator::SoftLight, + crate::bindings::CompositeOperator_SrcAtopCompositeOp => CompositeOperator::SrcAtop, + crate::bindings::CompositeOperator_SrcCompositeOp => CompositeOperator::Src, + crate::bindings::CompositeOperator_SrcInCompositeOp => CompositeOperator::SrcIn, + crate::bindings::CompositeOperator_SrcOutCompositeOp => CompositeOperator::SrcOut, + crate::bindings::CompositeOperator_SrcOverCompositeOp => CompositeOperator::SrcOver, + crate::bindings::CompositeOperator_ThresholdCompositeOp => CompositeOperator::Threshold, + crate::bindings::CompositeOperator_VividLightCompositeOp => CompositeOperator::VividLight, + crate::bindings::CompositeOperator_XorCompositeOp => CompositeOperator::Xor, + crate::bindings::CompositeOperator_StereoCompositeOp => CompositeOperator::Stereo, + crate::bindings::CompositeOperator_FreezeCompositeOp => CompositeOperator::Freeze, + crate::bindings::CompositeOperator_InterpolateCompositeOp => CompositeOperator::Interpolate, + crate::bindings::CompositeOperator_NegateCompositeOp => CompositeOperator::Negate, + crate::bindings::CompositeOperator_ReflectCompositeOp => CompositeOperator::Reflect, + crate::bindings::CompositeOperator_SoftBurnCompositeOp => CompositeOperator::SoftBurn, + crate::bindings::CompositeOperator_SoftDodgeCompositeOp => CompositeOperator::SoftDodge, + crate::bindings::CompositeOperator_StampCompositeOp => CompositeOperator::Stamp, + crate::bindings::CompositeOperator_RMSECompositeOp => CompositeOperator::RMSE, + crate::bindings::CompositeOperator_SaliencyBlendCompositeOp => CompositeOperator::SaliencyBlend, + crate::bindings::CompositeOperator_SeamlessBlendCompositeOp => CompositeOperator::SeamlessBlend, + _ => CompositeOperator::default(), + } + } +} diff --git a/src/wand/magick.rs b/src/wand/magick.rs index 593d4d7..517c2c7 100644 --- a/src/wand/magick.rs +++ b/src/wand/magick.rs @@ -28,7 +28,7 @@ use {size_t, ssize_t}; use crate::result::Result; -use super::{DrawingWand, PixelWand, CompositeOperator}; +use super::{CompositeOperator, DrawingWand, PixelWand}; wand_common!( MagickWand, @@ -232,6 +232,19 @@ 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, @@ -1086,7 +1099,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 From c480449dd2b617a7ed68926e57ffc88183590921 Mon Sep 17 00:00:00 2001 From: 5ohue <86558263+5ohue@users.noreply.github.com> Date: Thu, 16 Nov 2023 22:18:03 +0300 Subject: [PATCH 5/5] remove blank line --- src/wand/composite_operator.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/wand/composite_operator.rs b/src/wand/composite_operator.rs index ab9e7f8..a03e0b7 100644 --- a/src/wand/composite_operator.rs +++ b/src/wand/composite_operator.rs @@ -170,7 +170,6 @@ impl From for crate::bindings::CompositeOperator { CompositeOperator::RMSE => crate::bindings::CompositeOperator_RMSECompositeOp, CompositeOperator::SaliencyBlend => crate::bindings::CompositeOperator_SaliencyBlendCompositeOp, CompositeOperator::SeamlessBlend => crate::bindings::CompositeOperator_SeamlessBlendCompositeOp, - } } }