diff --git a/src/types/magick_evaluate_operator.rs b/src/types/magick_evaluate_operator.rs new file mode 100644 index 0000000..bbfff5e --- /dev/null +++ b/src/types/magick_evaluate_operator.rs @@ -0,0 +1,52 @@ +use crate::bindings; + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[repr(u32)] +pub enum MagickEvaluateOperator { + Undefined = bindings::MagickEvaluateOperator_UndefinedEvaluateOperator, + Abs = bindings::MagickEvaluateOperator_AbsEvaluateOperator, + Add = bindings::MagickEvaluateOperator_AddEvaluateOperator, + AddModulus = bindings::MagickEvaluateOperator_AddModulusEvaluateOperator, + And = bindings::MagickEvaluateOperator_AndEvaluateOperator, + Cosine = bindings::MagickEvaluateOperator_CosineEvaluateOperator, + Divide = bindings::MagickEvaluateOperator_DivideEvaluateOperator, + Exponential = bindings::MagickEvaluateOperator_ExponentialEvaluateOperator, + GaussianNoise = bindings::MagickEvaluateOperator_GaussianNoiseEvaluateOperator, + ImpulseNoise = bindings::MagickEvaluateOperator_ImpulseNoiseEvaluateOperator, + LaplacianNoise = bindings::MagickEvaluateOperator_LaplacianNoiseEvaluateOperator, + LeftShift = bindings::MagickEvaluateOperator_LeftShiftEvaluateOperator, + Log = bindings::MagickEvaluateOperator_LogEvaluateOperator, + Max = bindings::MagickEvaluateOperator_MaxEvaluateOperator, + Mean = bindings::MagickEvaluateOperator_MeanEvaluateOperator, + Median = bindings::MagickEvaluateOperator_MedianEvaluateOperator, + Min = bindings::MagickEvaluateOperator_MinEvaluateOperator, + MultiplicativeNoise = bindings::MagickEvaluateOperator_MultiplicativeNoiseEvaluateOperator, + Multiply = bindings::MagickEvaluateOperator_MultiplyEvaluateOperator, + Or = bindings::MagickEvaluateOperator_OrEvaluateOperator, + PoissonNoise = bindings::MagickEvaluateOperator_PoissonNoiseEvaluateOperator, + Pow = bindings::MagickEvaluateOperator_PowEvaluateOperator, + RightShift = bindings::MagickEvaluateOperator_RightShiftEvaluateOperator, + RootMeanSquare = bindings::MagickEvaluateOperator_RootMeanSquareEvaluateOperator, + Set = bindings::MagickEvaluateOperator_SetEvaluateOperator, + Sine = bindings::MagickEvaluateOperator_SineEvaluateOperator, + Subtract = bindings::MagickEvaluateOperator_SubtractEvaluateOperator, + Sum = bindings::MagickEvaluateOperator_SumEvaluateOperator, + ThresholdBlack = bindings::MagickEvaluateOperator_ThresholdBlackEvaluateOperator, + Threshold = bindings::MagickEvaluateOperator_ThresholdEvaluateOperator, + ThresholdWhite = bindings::MagickEvaluateOperator_ThresholdWhiteEvaluateOperator, + UniformNoise = bindings::MagickEvaluateOperator_UniformNoiseEvaluateOperator, + Xor = bindings::MagickEvaluateOperator_XorEvaluateOperator, + InverseLog = bindings::MagickEvaluateOperator_InverseLogEvaluateOperator, +} + +impl Default for MagickEvaluateOperator { + fn default() -> Self { + return MagickEvaluateOperator::Undefined; + } +} + +impl From for bindings::MagickEvaluateOperator { + fn from(value: MagickEvaluateOperator) -> Self { + return value as bindings::MagickEvaluateOperator; + } +} diff --git a/src/types/mod.rs b/src/types/mod.rs index ca39a90..ada8d0f 100644 --- a/src/types/mod.rs +++ b/src/types/mod.rs @@ -18,6 +18,7 @@ mod image_type; mod interlace_type; mod line_cap; mod line_join; +mod magick_evaluate_operator; mod magick_function; mod metric_type; mod orientation_type; @@ -49,6 +50,7 @@ pub use self::image_type::ImageType; pub use self::interlace_type::InterlaceType; pub use self::line_cap::LineCap; pub use self::line_join::LineJoin; +pub use self::magick_evaluate_operator::MagickEvaluateOperator; pub use self::magick_function::MagickFunction; pub use self::metric_type::MetricType; pub use self::orientation_type::OrientationType; diff --git a/src/wand/magick.rs b/src/wand/magick.rs index 30e6399..b3a177e 100644 --- a/src/wand/magick.rs +++ b/src/wand/magick.rs @@ -44,6 +44,7 @@ use crate::{ GravityType, ImageType, InterlaceType, + MagickEvaluateOperator, MagickFunction, MetricType, OrientationType, @@ -1201,8 +1202,8 @@ impl MagickWand { /// expression to an image. Use these operators to lighten or darken an image, /// to increase or decrease contrast in an image, or to produce the "negative" /// of an image. - pub fn evaluate_image(&mut self, op: bindings::MagickEvaluateOperator, val: f64) -> Result<()> { - let res = unsafe { bindings::MagickEvaluateImage(self.wand, op, val) }; + pub fn evaluate_image(&mut self, op: MagickEvaluateOperator, val: f64) -> Result<()> { + let res = unsafe { bindings::MagickEvaluateImage(self.wand, op.into(), val) }; match res { MagickTrue => Ok(()), _ => Err(MagickError("failed to evaluate image")),