Add set_image_mask function

This commit is contained in:
5ohue
2024-05-12 22:06:10 +03:00
parent e31675e477
commit 1752b0073c
3 changed files with 46 additions and 0 deletions

View File

@ -25,6 +25,7 @@ mod magick_function;
mod metric_type;
mod orientation_type;
mod pixel_interpolate_method;
mod pixel_mask;
mod rendering_intent;
mod resolution_type;
mod resource_type;
@ -59,6 +60,7 @@ pub use self::magick_function::MagickFunction;
pub use self::metric_type::MetricType;
pub use self::orientation_type::OrientationType;
pub use self::pixel_interpolate_method::PixelInterpolateMethod;
pub use self::pixel_mask::PixelMask;
pub use self::rendering_intent::RenderingIntent;
pub use self::resolution_type::ResolutionType;
pub use self::resource_type::ResourceType;

22
src/types/pixel_mask.rs Normal file
View File

@ -0,0 +1,22 @@
use crate::bindings;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u32)]
pub enum PixelMask {
Undefined = bindings::PixelMask_UndefinedPixelMask,
Read = bindings::PixelMask_ReadPixelMask,
Write = bindings::PixelMask_WritePixelMask,
Composite = bindings::PixelMask_CompositePixelMask,
}
impl Default for PixelMask {
fn default() -> Self {
return PixelMask::Undefined;
}
}
impl From<PixelMask> for bindings::PixelMask {
fn from(value: PixelMask) -> Self {
return value as bindings::PixelMask;
}
}

View File

@ -51,6 +51,7 @@ use crate::{
MorphologyMethod,
OrientationType,
PixelInterpolateMethod,
PixelMask,
RenderingIntent,
ResolutionType,
ResourceType,
@ -1239,6 +1240,27 @@ impl MagickWand {
}
}
/// Sets image clip mask.
///
/// * `pixel_mask`: type of mask, Read or Write.
/// * `clip_mask`: the clip_mask wand.
pub fn set_image_mask(
&mut self,
pixel_mask: PixelMask,
clip_mask: &MagickWand
) -> Result<()> {
match unsafe {
bindings::MagickSetImageMask(
self.wand,
pixel_mask.into(),
clip_mask.wand
)
} {
MagickTrue => Ok(()),
_ => Err(MagickError("failed to set image mask")),
}
}
/// Set image channel mask
pub fn set_image_channel_mask(
&mut self,