diff --git a/src/lib.rs b/src/lib.rs index 32fbc30..a14913a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -41,10 +41,12 @@ pub use conversions::ToMagick; pub use result::MagickError; use result::Result; pub use wand::*; +pub use types::*; mod conversions; mod result; mod wand; +mod types; include!(concat!(env!("OUT_DIR"), "/bindings.rs")); /// This function must be called before any other ImageMagick operations diff --git a/src/types/composite_operator.rs b/src/types/composite_operator.rs new file mode 100644 index 0000000..4f3f197 --- /dev/null +++ b/src/types/composite_operator.rs @@ -0,0 +1,117 @@ +use crate::bindings; + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[repr(u32)] +pub enum CompositeOperator { + Undefined = bindings::CompositeOperator_UndefinedCompositeOp, + Alpha = bindings::CompositeOperator_AlphaCompositeOp, + Atop = bindings::CompositeOperator_AtopCompositeOp, + Blend = bindings::CompositeOperator_BlendCompositeOp, + Blur = bindings::CompositeOperator_BlurCompositeOp, + Bumpmap = bindings::CompositeOperator_BumpmapCompositeOp, + ChangeMask = bindings::CompositeOperator_ChangeMaskCompositeOp, + Clear = bindings::CompositeOperator_ClearCompositeOp, + ColorBurn = bindings::CompositeOperator_ColorBurnCompositeOp, + ColorDodge = bindings::CompositeOperator_ColorDodgeCompositeOp, + Colorize = bindings::CompositeOperator_ColorizeCompositeOp, + CopyBlack = bindings::CompositeOperator_CopyBlackCompositeOp, + CopyBlue = bindings::CompositeOperator_CopyBlueCompositeOp, + Copy = bindings::CompositeOperator_CopyCompositeOp, + CopyCyan = bindings::CompositeOperator_CopyCyanCompositeOp, + CopyGreen = bindings::CompositeOperator_CopyGreenCompositeOp, + CopyMagenta = bindings::CompositeOperator_CopyMagentaCompositeOp, + CopyAlpha = bindings::CompositeOperator_CopyAlphaCompositeOp, + CopyRed = bindings::CompositeOperator_CopyRedCompositeOp, + CopyYellow = bindings::CompositeOperator_CopyYellowCompositeOp, + Darken = bindings::CompositeOperator_DarkenCompositeOp, + DarkenIntensity = bindings::CompositeOperator_DarkenIntensityCompositeOp, + Difference = bindings::CompositeOperator_DifferenceCompositeOp, + Displace = bindings::CompositeOperator_DisplaceCompositeOp, + Dissolve = bindings::CompositeOperator_DissolveCompositeOp, + Distort = bindings::CompositeOperator_DistortCompositeOp, + DivideDst = bindings::CompositeOperator_DivideDstCompositeOp, + DivideSrc = bindings::CompositeOperator_DivideSrcCompositeOp, + DstAtop = bindings::CompositeOperator_DstAtopCompositeOp, + Dst = bindings::CompositeOperator_DstCompositeOp, + DstIn = bindings::CompositeOperator_DstInCompositeOp, + DstOut = bindings::CompositeOperator_DstOutCompositeOp, + DstOver = bindings::CompositeOperator_DstOverCompositeOp, + Exclusion = bindings::CompositeOperator_ExclusionCompositeOp, + HardLight = bindings::CompositeOperator_HardLightCompositeOp, + HardMix = bindings::CompositeOperator_HardMixCompositeOp, + Hue = bindings::CompositeOperator_HueCompositeOp, + In = bindings::CompositeOperator_InCompositeOp, + Intensity = bindings::CompositeOperator_IntensityCompositeOp, + Lighten = bindings::CompositeOperator_LightenCompositeOp, + LightenIntensity = bindings::CompositeOperator_LightenIntensityCompositeOp, + LinearBurn = bindings::CompositeOperator_LinearBurnCompositeOp, + LinearDodge = bindings::CompositeOperator_LinearDodgeCompositeOp, + LinearLight = bindings::CompositeOperator_LinearLightCompositeOp, + Luminize = bindings::CompositeOperator_LuminizeCompositeOp, + Mathematics = bindings::CompositeOperator_MathematicsCompositeOp, + MinusDst = bindings::CompositeOperator_MinusDstCompositeOp, + MinusSrc = bindings::CompositeOperator_MinusSrcCompositeOp, + Modulate = bindings::CompositeOperator_ModulateCompositeOp, + ModulusAdd = bindings::CompositeOperator_ModulusAddCompositeOp, + ModulusSubtract = bindings::CompositeOperator_ModulusSubtractCompositeOp, + Multiply = bindings::CompositeOperator_MultiplyCompositeOp, + No = bindings::CompositeOperator_NoCompositeOp, + Out = bindings::CompositeOperator_OutCompositeOp, + Over = bindings::CompositeOperator_OverCompositeOp, + Overlay = bindings::CompositeOperator_OverlayCompositeOp, + PegtopLight = bindings::CompositeOperator_PegtopLightCompositeOp, + PinLight = bindings::CompositeOperator_PinLightCompositeOp, + Plus = bindings::CompositeOperator_PlusCompositeOp, + Replace = bindings::CompositeOperator_ReplaceCompositeOp, + Saturate = bindings::CompositeOperator_SaturateCompositeOp, + Screen = bindings::CompositeOperator_ScreenCompositeOp, + SoftLight = bindings::CompositeOperator_SoftLightCompositeOp, + SrcAtop = bindings::CompositeOperator_SrcAtopCompositeOp, + Src = bindings::CompositeOperator_SrcCompositeOp, + SrcIn = bindings::CompositeOperator_SrcInCompositeOp, + SrcOut = bindings::CompositeOperator_SrcOutCompositeOp, + SrcOver = bindings::CompositeOperator_SrcOverCompositeOp, + Threshold = bindings::CompositeOperator_ThresholdCompositeOp, + VividLight = bindings::CompositeOperator_VividLightCompositeOp, + Xor = bindings::CompositeOperator_XorCompositeOp, + Stereo = bindings::CompositeOperator_StereoCompositeOp, + Freeze = bindings::CompositeOperator_FreezeCompositeOp, + Interpolate = bindings::CompositeOperator_InterpolateCompositeOp, + Negate = bindings::CompositeOperator_NegateCompositeOp, + Reflect = bindings::CompositeOperator_ReflectCompositeOp, + SoftBurn = bindings::CompositeOperator_SoftBurnCompositeOp, + SoftDodge = bindings::CompositeOperator_SoftDodgeCompositeOp, + Stamp = bindings::CompositeOperator_StampCompositeOp, + RMSE = bindings::CompositeOperator_RMSECompositeOp, + SaliencyBlend = bindings::CompositeOperator_SaliencyBlendCompositeOp, + SeamlessBlend = bindings::CompositeOperator_SeamlessBlendCompositeOp, +} + +impl Default for CompositeOperator { + fn default() -> Self { + return CompositeOperator::Over; + } +} + +impl From for bindings::CompositeOperator { + fn from(value: CompositeOperator) -> Self { + return value as bindings::CompositeOperator; + } +} + +impl From for CompositeOperator { + fn from(value: bindings::CompositeOperator) -> Self { + /* + * SAFETY: + * + * `CompositeOperator` has the same repr as `bindings::CompositeOperator` - u32 + * + * If `value` is less than SeamlessBlend than it is in the vaild range and can be safely + * reinterpreted as `CompositeOperator` + */ + if value <= bindings::CompositeOperator_SeamlessBlendCompositeOp { + return unsafe { std::mem::transmute(value) }; + } + return CompositeOperator::default(); + } +} diff --git a/src/types/mod.rs b/src/types/mod.rs new file mode 100644 index 0000000..3891ff1 --- /dev/null +++ b/src/types/mod.rs @@ -0,0 +1,7 @@ +mod composite_operator; +mod metric_type; +mod resource_type; + +pub use self::composite_operator::CompositeOperator; +pub use self::metric_type::MetricType; +pub use self::resource_type::ResourceType; diff --git a/src/types/resource_type.rs b/src/types/resource_type.rs new file mode 100644 index 0000000..e31499c --- /dev/null +++ b/src/types/resource_type.rs @@ -0,0 +1,26 @@ +use std::convert::TryInto; + +use crate::bindings; + +/// Resource type to use with [set_resource_limit](crate::MagickWand::set_resource_limit) +#[derive(Debug, Clone, Copy)] +pub enum ResourceType { + Undefined = bindings::ResourceType_UndefinedResource as isize, + Area = bindings::ResourceType_AreaResource as isize, + Disk = bindings::ResourceType_DiskResource as isize, + File = bindings::ResourceType_FileResource as isize, + Height = bindings::ResourceType_HeightResource as isize, + Map = bindings::ResourceType_MapResource as isize, + Memory = bindings::ResourceType_MemoryResource as isize, + Thread = bindings::ResourceType_ThreadResource as isize, + Throttle = bindings::ResourceType_ThrottleResource as isize, + Time = bindings::ResourceType_TimeResource as isize, + Width = bindings::ResourceType_WidthResource as isize, + ListLength = bindings::ResourceType_ListLengthResource as isize, +} + +impl From for bindings::ResourceType { + fn from(value: ResourceType) -> Self { + return value as bindings::ResourceType; + } +} diff --git a/src/wand/composite_operator.rs b/src/wand/composite_operator.rs deleted file mode 100644 index a03e0b7..0000000 --- a/src/wand/composite_operator.rs +++ /dev/null @@ -1,265 +0,0 @@ -#[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 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 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 476f0d1..2e5991e 100644 --- a/src/wand/magick.rs +++ b/src/wand/magick.rs @@ -28,7 +28,8 @@ use {size_t, ssize_t}; use crate::result::Result; -use super::{CompositeOperator, DrawingWand, PixelWand}; +use super::{DrawingWand, PixelWand}; +use crate::{CompositeOperator, ResourceType}; wand_common!( MagickWand, @@ -42,23 +43,6 @@ wand_common!( MagickGetException ); -/// Resource type to use with [set_resource_limit](MagickWand::set_resource_limit) -#[derive(Debug, Clone, Copy)] -pub enum ResourceType { - Undefined = bindings::ResourceType_UndefinedResource as isize, - Area = bindings::ResourceType_AreaResource as isize, - Disk = bindings::ResourceType_DiskResource as isize, - File = bindings::ResourceType_FileResource as isize, - Height = bindings::ResourceType_HeightResource as isize, - Map = bindings::ResourceType_MapResource as isize, - Memory = bindings::ResourceType_MemoryResource as isize, - Thread = bindings::ResourceType_ThreadResource as isize, - Throttle = bindings::ResourceType_ThrottleResource as isize, - Time = bindings::ResourceType_TimeResource as isize, - Width = bindings::ResourceType_WidthResource as isize, - ListLength = bindings::ResourceType_ListLengthResource as isize, -} - /// MagickWand is a Rustic wrapper to the Rust bindings to ImageMagick. /// /// Instantiating a `MagickWand` will construct an ImageMagick "wand" @@ -78,7 +62,7 @@ impl MagickWand { pub fn set_resource_limit(resource: ResourceType, limit: u64) -> Result<()> { let result = unsafe { bindings::SetMagickResourceLimit( - resource as bindings::ResourceType, + resource.into(), limit as bindings::MagickSizeType, ) }; diff --git a/src/wand/mod.rs b/src/wand/mod.rs index 1e40284..29601df 100644 --- a/src/wand/mod.rs +++ b/src/wand/mod.rs @@ -15,12 +15,10 @@ */ #[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::magick::MagickWand; pub use self::pixel::{PixelWand, HSL};