@ -36,9 +36,7 @@ use libc::size_t;
|
|||||||
#[cfg(not(target_os = "freebsd"))]
|
#[cfg(not(target_os = "freebsd"))]
|
||||||
use libc::ssize_t;
|
use libc::ssize_t;
|
||||||
|
|
||||||
pub use bindings::{
|
pub use bindings::{ColorspaceType, DitherMethod, FilterType, GravityType, MetricType};
|
||||||
ColorspaceType, CompositeOperator, DitherMethod, FilterType, GravityType, MetricType,
|
|
||||||
};
|
|
||||||
pub use conversions::ToMagick;
|
pub use conversions::ToMagick;
|
||||||
pub use result::MagickError;
|
pub use result::MagickError;
|
||||||
use result::Result;
|
use result::Result;
|
||||||
|
|||||||
265
src/wand/composite_operator.rs
Normal file
265
src/wand/composite_operator.rs
Normal file
@ -0,0 +1,265 @@
|
|||||||
|
#[derive(Default, Debug, Clone, Copy)]
|
||||||
|
pub enum CompositeOperator {
|
||||||
|
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,
|
||||||
|
#[default]
|
||||||
|
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<CompositeOperator> 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,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<crate::bindings::CompositeOperator> 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(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -28,7 +28,7 @@ use {size_t, ssize_t};
|
|||||||
|
|
||||||
use crate::result::Result;
|
use crate::result::Result;
|
||||||
|
|
||||||
use super::{DrawingWand, PixelWand};
|
use super::{CompositeOperator, DrawingWand, PixelWand};
|
||||||
|
|
||||||
wand_common!(
|
wand_common!(
|
||||||
MagickWand,
|
MagickWand,
|
||||||
@ -232,11 +232,24 @@ impl MagickWand {
|
|||||||
(distortion, wand)
|
(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
|
/// Compose another image onto self at (x, y) using composition_operator
|
||||||
pub fn compose_images(
|
pub fn compose_images(
|
||||||
&self,
|
&self,
|
||||||
reference: &MagickWand,
|
reference: &MagickWand,
|
||||||
composition_operator: bindings::CompositeOperator,
|
composition_operator: CompositeOperator,
|
||||||
clip_to_self: bool,
|
clip_to_self: bool,
|
||||||
x: isize,
|
x: isize,
|
||||||
y: isize,
|
y: isize,
|
||||||
@ -250,7 +263,7 @@ impl MagickWand {
|
|||||||
bindings::MagickCompositeImage(
|
bindings::MagickCompositeImage(
|
||||||
self.wand,
|
self.wand,
|
||||||
reference.wand,
|
reference.wand,
|
||||||
composition_operator,
|
composition_operator.into(),
|
||||||
native_clip_to_self,
|
native_clip_to_self,
|
||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
@ -266,14 +279,14 @@ impl MagickWand {
|
|||||||
pub fn compose_images_gravity(
|
pub fn compose_images_gravity(
|
||||||
&self,
|
&self,
|
||||||
reference: &MagickWand,
|
reference: &MagickWand,
|
||||||
composition_operator: bindings::CompositeOperator,
|
composition_operator: CompositeOperator,
|
||||||
gravity_type: bindings::GravityType,
|
gravity_type: bindings::GravityType,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let result = unsafe {
|
let result = unsafe {
|
||||||
bindings::MagickCompositeImageGravity(
|
bindings::MagickCompositeImageGravity(
|
||||||
self.wand,
|
self.wand,
|
||||||
reference.wand,
|
reference.wand,
|
||||||
composition_operator,
|
composition_operator.into(),
|
||||||
gravity_type,
|
gravity_type,
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
@ -973,10 +986,10 @@ impl MagickWand {
|
|||||||
pixel_wand: &PixelWand,
|
pixel_wand: &PixelWand,
|
||||||
width: usize,
|
width: usize,
|
||||||
height: usize,
|
height: usize,
|
||||||
compose: bindings::CompositeOperator,
|
compose: CompositeOperator,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
match unsafe {
|
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(()),
|
bindings::MagickBooleanType_MagickTrue => Ok(()),
|
||||||
|
|
||||||
@ -1110,7 +1123,6 @@ impl MagickWand {
|
|||||||
get_compression_quality, set_compression_quality, MagickGetCompressionQuality, MagickSetCompressionQuality, size_t
|
get_compression_quality, set_compression_quality, MagickGetCompressionQuality, MagickSetCompressionQuality, size_t
|
||||||
get_gravity, set_gravity, MagickGetGravity, MagickSetGravity, bindings::GravityType
|
get_gravity, set_gravity, MagickGetGravity, MagickSetGravity, bindings::GravityType
|
||||||
get_image_colorspace, set_image_colorspace, MagickGetImageColorspace, MagickSetImageColorspace, bindings::ColorspaceType
|
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, set_image_compression, MagickGetImageCompression, MagickSetImageCompression, bindings::CompressionType
|
||||||
get_image_compression_quality, set_image_compression_quality, MagickGetImageCompressionQuality, MagickSetImageCompressionQuality, size_t
|
get_image_compression_quality, set_image_compression_quality, MagickGetImageCompressionQuality, MagickSetImageCompressionQuality, size_t
|
||||||
get_image_delay, set_image_delay, MagickGetImageDelay, MagickSetImageDelay, size_t
|
get_image_delay, set_image_delay, MagickGetImageDelay, MagickSetImageDelay, size_t
|
||||||
|
|||||||
@ -15,10 +15,12 @@
|
|||||||
*/
|
*/
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
mod macros;
|
mod macros;
|
||||||
|
mod composite_operator;
|
||||||
mod drawing;
|
mod drawing;
|
||||||
mod magick;
|
mod magick;
|
||||||
mod pixel;
|
mod pixel;
|
||||||
|
|
||||||
|
pub use self::composite_operator::CompositeOperator;
|
||||||
pub use self::drawing::DrawingWand;
|
pub use self::drawing::DrawingWand;
|
||||||
pub use self::magick::{MagickWand, ResourceType};
|
pub use self::magick::{MagickWand, ResourceType};
|
||||||
pub use self::pixel::{PixelWand, HSL};
|
pub use self::pixel::{PixelWand, HSL};
|
||||||
|
|||||||
Reference in New Issue
Block a user