Add FilterType type
This commit is contained in:
@ -36,7 +36,7 @@ use libc::size_t;
|
||||
#[cfg(not(target_os = "freebsd"))]
|
||||
use libc::ssize_t;
|
||||
|
||||
pub use bindings::{FilterType, GravityType};
|
||||
pub use bindings::GravityType;
|
||||
pub use conversions::ToMagick;
|
||||
pub use result::MagickError;
|
||||
use result::Result;
|
||||
|
||||
45
src/types/filter_type.rs
Normal file
45
src/types/filter_type.rs
Normal file
@ -0,0 +1,45 @@
|
||||
use crate::bindings;
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
#[repr(u32)]
|
||||
pub enum FilterType {
|
||||
Undefined = bindings::FilterType_UndefinedFilter,
|
||||
Point = bindings::FilterType_PointFilter,
|
||||
Box = bindings::FilterType_BoxFilter,
|
||||
Triangle = bindings::FilterType_TriangleFilter,
|
||||
Hermite = bindings::FilterType_HermiteFilter,
|
||||
Hann = bindings::FilterType_HannFilter,
|
||||
Hamming = bindings::FilterType_HammingFilter,
|
||||
Blackman = bindings::FilterType_BlackmanFilter,
|
||||
Gaussian = bindings::FilterType_GaussianFilter,
|
||||
Quadratic = bindings::FilterType_QuadraticFilter,
|
||||
Cubic = bindings::FilterType_CubicFilter,
|
||||
Catrom = bindings::FilterType_CatromFilter,
|
||||
Mitchell = bindings::FilterType_MitchellFilter,
|
||||
Jinc = bindings::FilterType_JincFilter,
|
||||
Sinc = bindings::FilterType_SincFilter,
|
||||
SincFast = bindings::FilterType_SincFastFilter,
|
||||
Kaiser = bindings::FilterType_KaiserFilter,
|
||||
Welch = bindings::FilterType_WelchFilter,
|
||||
Parzen = bindings::FilterType_ParzenFilter,
|
||||
Bohman = bindings::FilterType_BohmanFilter,
|
||||
Bartlett = bindings::FilterType_BartlettFilter,
|
||||
Lagrange = bindings::FilterType_LagrangeFilter,
|
||||
Lanczos = bindings::FilterType_LanczosFilter,
|
||||
LanczosSharp = bindings::FilterType_LanczosSharpFilter,
|
||||
Lanczos2 = bindings::FilterType_Lanczos2Filter,
|
||||
Lanczos2Sharp = bindings::FilterType_Lanczos2SharpFilter,
|
||||
Robidoux = bindings::FilterType_RobidouxFilter,
|
||||
RobidouxSharp = bindings::FilterType_RobidouxSharpFilter,
|
||||
Cosine = bindings::FilterType_CosineFilter,
|
||||
Spline = bindings::FilterType_SplineFilter,
|
||||
LanczosRadius = bindings::FilterType_LanczosRadiusFilter,
|
||||
CubicSpline = bindings::FilterType_CubicSplineFilter,
|
||||
Sentinel = bindings::FilterType_SentinelFilter,
|
||||
}
|
||||
|
||||
impl From<FilterType> for bindings::FilterType {
|
||||
fn from(value: FilterType) -> Self {
|
||||
return value as bindings::FilterType;
|
||||
}
|
||||
}
|
||||
@ -1,11 +1,13 @@
|
||||
mod colorspace_type;
|
||||
mod composite_operator;
|
||||
mod dither_method;
|
||||
mod filter_type;
|
||||
mod metric_type;
|
||||
mod resource_type;
|
||||
|
||||
pub use self::colorspace_type::ColorspaceType;
|
||||
pub use self::composite_operator::CompositeOperator;
|
||||
pub use self::dither_method::DitherMethod;
|
||||
pub use self::filter_type::FilterType;
|
||||
pub use self::metric_type::MetricType;
|
||||
pub use self::resource_type::ResourceType;
|
||||
|
||||
@ -33,6 +33,7 @@ use crate::{
|
||||
ColorspaceType,
|
||||
CompositeOperator,
|
||||
DitherMethod,
|
||||
FilterType,
|
||||
MetricType,
|
||||
ResourceType
|
||||
};
|
||||
@ -780,9 +781,9 @@ impl MagickWand {
|
||||
|
||||
/// Resize the image to the specified width and height, using the
|
||||
/// specified filter type.
|
||||
pub fn resize_image(&self, width: usize, height: usize, filter: bindings::FilterType) {
|
||||
pub fn resize_image(&self, width: usize, height: usize, filter: FilterType) {
|
||||
unsafe {
|
||||
bindings::MagickResizeImage(self.wand, width as size_t, height as size_t, filter);
|
||||
bindings::MagickResizeImage(self.wand, width as size_t, height as size_t, filter.into());
|
||||
}
|
||||
}
|
||||
|
||||
@ -823,10 +824,10 @@ impl MagickWand {
|
||||
&self,
|
||||
x_resolution: f64,
|
||||
y_resolution: f64,
|
||||
filter: bindings::FilterType,
|
||||
filter: FilterType,
|
||||
) {
|
||||
unsafe {
|
||||
bindings::MagickResampleImage(self.wand, x_resolution, y_resolution, filter);
|
||||
bindings::MagickResampleImage(self.wand, x_resolution, y_resolution, filter.into());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -54,7 +54,7 @@ fn test_resize_image() {
|
||||
1 => 1,
|
||||
height => height / 2,
|
||||
};
|
||||
wand.resize_image(halfwidth, halfheight, bindings::FilterType_LanczosFilter);
|
||||
wand.resize_image(halfwidth, halfheight, magick_rust::FilterType::Lanczos);
|
||||
assert_eq!(256, wand.get_image_width());
|
||||
assert_eq!(192, wand.get_image_height());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user