Add MagickEvaluateOperator type

This commit is contained in:
5ohue
2024-05-11 23:59:16 +03:00
parent 7c43f8018e
commit 26a8dd3df7
3 changed files with 57 additions and 2 deletions

View File

@ -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<MagickEvaluateOperator> for bindings::MagickEvaluateOperator {
fn from(value: MagickEvaluateOperator) -> Self {
return value as bindings::MagickEvaluateOperator;
}
}

View File

@ -18,6 +18,7 @@ mod image_type;
mod interlace_type; mod interlace_type;
mod line_cap; mod line_cap;
mod line_join; mod line_join;
mod magick_evaluate_operator;
mod magick_function; mod magick_function;
mod metric_type; mod metric_type;
mod orientation_type; mod orientation_type;
@ -49,6 +50,7 @@ pub use self::image_type::ImageType;
pub use self::interlace_type::InterlaceType; pub use self::interlace_type::InterlaceType;
pub use self::line_cap::LineCap; pub use self::line_cap::LineCap;
pub use self::line_join::LineJoin; pub use self::line_join::LineJoin;
pub use self::magick_evaluate_operator::MagickEvaluateOperator;
pub use self::magick_function::MagickFunction; pub use self::magick_function::MagickFunction;
pub use self::metric_type::MetricType; pub use self::metric_type::MetricType;
pub use self::orientation_type::OrientationType; pub use self::orientation_type::OrientationType;

View File

@ -44,6 +44,7 @@ use crate::{
GravityType, GravityType,
ImageType, ImageType,
InterlaceType, InterlaceType,
MagickEvaluateOperator,
MagickFunction, MagickFunction,
MetricType, MetricType,
OrientationType, OrientationType,
@ -1201,8 +1202,8 @@ impl MagickWand {
/// expression to an image. Use these operators to lighten or darken an image, /// 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" /// to increase or decrease contrast in an image, or to produce the "negative"
/// of an image. /// of an image.
pub fn evaluate_image(&mut self, op: bindings::MagickEvaluateOperator, val: f64) -> Result<()> { pub fn evaluate_image(&mut self, op: MagickEvaluateOperator, val: f64) -> Result<()> {
let res = unsafe { bindings::MagickEvaluateImage(self.wand, op, val) }; let res = unsafe { bindings::MagickEvaluateImage(self.wand, op.into(), val) };
match res { match res {
MagickTrue => Ok(()), MagickTrue => Ok(()),
_ => Err(MagickError("failed to evaluate image")), _ => Err(MagickError("failed to evaluate image")),