Add AutoThresholdMethod type

This commit is contained in:
5ohue
2024-05-11 23:33:57 +03:00
parent 5eb991ba69
commit 043616a87a
3 changed files with 27 additions and 2 deletions

View File

@ -0,0 +1,22 @@
use crate::bindings;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u32)]
pub enum AutoThresholdMethod {
Undefined = bindings::AutoThresholdMethod_UndefinedThresholdMethod,
Kapur = bindings::AutoThresholdMethod_KapurThresholdMethod,
OTSU = bindings::AutoThresholdMethod_OTSUThresholdMethod,
Triangle = bindings::AutoThresholdMethod_TriangleThresholdMethod,
}
impl Default for AutoThresholdMethod {
fn default() -> Self {
return AutoThresholdMethod::Undefined;
}
}
impl From<AutoThresholdMethod> for bindings::AutoThresholdMethod {
fn from(value: AutoThresholdMethod) -> Self {
return value as bindings::AutoThresholdMethod;
}
}

View File

@ -1,5 +1,6 @@
mod align_type;
mod alpha_channel_option;
mod auto_threshold_method;
mod clip_path_units;
mod colorspace_type;
mod composite_operator;
@ -29,6 +30,7 @@ mod style_type;
pub use self::align_type::AlignType;
pub use self::alpha_channel_option::AlphaChannelOption;
pub use self::auto_threshold_method::AutoThresholdMethod;
pub use self::clip_path_units::ClipPathUnits;
pub use self::colorspace_type::ColorspaceType;
pub use self::composite_operator::CompositeOperator;

View File

@ -32,6 +32,7 @@ use super::{MagickTrue, MagickFalse};
use super::{DrawingWand, PixelWand};
use crate::{
AlphaChannelOption,
AutoThresholdMethod,
ColorspaceType,
CompositeOperator,
CompressionType,
@ -1286,8 +1287,8 @@ impl MagickWand {
/// down to a binary black & white image. Included algorithms are
/// Kapur, Otsu, and Triangle methods.
/// See <https://imagemagick.org/api/magick-image.php#MagickAutoThresholdImage> for more information.
pub fn auto_threshold(&self, method: bindings::AutoThresholdMethod) -> Result<()> {
match unsafe { bindings::MagickAutoThresholdImage(self.wand, method) } {
pub fn auto_threshold(&self, method: AutoThresholdMethod) -> Result<()> {
match unsafe { bindings::MagickAutoThresholdImage(self.wand, method.into()) } {
MagickTrue => Ok(()),
_ => Err(MagickError("unable to auto threshold image")),
}