Add compositeOperator type
This commit is contained in:
@ -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;
|
||||||
|
|||||||
322
src/wand/composite_operator.rs
Normal file
322
src/wand/composite_operator.rs
Normal file
@ -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<CompositeOperator> 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -28,7 +28,7 @@ use {size_t, ssize_t};
|
|||||||
|
|
||||||
use crate::result::Result;
|
use crate::result::Result;
|
||||||
|
|
||||||
use super::{DrawingWand, PixelWand};
|
use super::{DrawingWand, PixelWand, CompositeOperator};
|
||||||
|
|
||||||
wand_common!(
|
wand_common!(
|
||||||
MagickWand,
|
MagickWand,
|
||||||
@ -236,7 +236,7 @@ impl MagickWand {
|
|||||||
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 +250,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 +266,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,
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
@ -949,10 +949,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(()),
|
||||||
|
|
||||||
|
|||||||
@ -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