Add MetricType 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::{ColorspaceType, DitherMethod, FilterType, GravityType, MetricType};
|
||||
pub use bindings::{ColorspaceType, DitherMethod, FilterType, GravityType};
|
||||
pub use conversions::ToMagick;
|
||||
pub use result::MagickError;
|
||||
use result::Result;
|
||||
|
||||
29
src/types/metric_type.rs
Normal file
29
src/types/metric_type.rs
Normal file
@ -0,0 +1,29 @@
|
||||
use crate::bindings;
|
||||
|
||||
pub enum MetricType {
|
||||
Undefined = bindings::MetricType_UndefinedErrorMetric as isize,
|
||||
Absolute = bindings::MetricType_AbsoluteErrorMetric as isize,
|
||||
Fuzz = bindings::MetricType_FuzzErrorMetric as isize,
|
||||
MeanAbsolute = bindings::MetricType_MeanAbsoluteErrorMetric as isize,
|
||||
MeanErrorPerPixel = bindings::MetricType_MeanErrorPerPixelErrorMetric as isize,
|
||||
MeanSquared = bindings::MetricType_MeanSquaredErrorMetric as isize,
|
||||
NormalizedCrossCorrelation = bindings::MetricType_NormalizedCrossCorrelationErrorMetric as isize,
|
||||
PeakAbsolute = bindings::MetricType_PeakAbsoluteErrorMetric as isize,
|
||||
PeakSignalToNoiseRatio = bindings::MetricType_PeakSignalToNoiseRatioErrorMetric as isize,
|
||||
PerceptualHash = bindings::MetricType_PerceptualHashErrorMetric as isize,
|
||||
RootMeanSquared = bindings::MetricType_RootMeanSquaredErrorMetric as isize,
|
||||
StructuralSimilarity = bindings::MetricType_StructuralSimilarityErrorMetric as isize,
|
||||
StructuralDissimilarity = bindings::MetricType_StructuralDissimilarityErrorMetric as isize,
|
||||
}
|
||||
|
||||
impl Default for MetricType {
|
||||
fn default() -> Self {
|
||||
return MetricType::Absolute;
|
||||
}
|
||||
}
|
||||
|
||||
impl From<MetricType> for bindings::MetricType {
|
||||
fn from(value: MetricType) -> Self {
|
||||
return value as bindings::MetricType;
|
||||
}
|
||||
}
|
||||
@ -29,7 +29,7 @@ use {size_t, ssize_t};
|
||||
use crate::result::Result;
|
||||
|
||||
use super::{DrawingWand, PixelWand};
|
||||
use crate::{CompositeOperator, ResourceType};
|
||||
use crate::{CompositeOperator, MetricType, ResourceType};
|
||||
|
||||
wand_common!(
|
||||
MagickWand,
|
||||
@ -202,11 +202,11 @@ impl MagickWand {
|
||||
pub fn compare_images(
|
||||
&self,
|
||||
reference: &MagickWand,
|
||||
metric: bindings::MetricType,
|
||||
metric: MetricType,
|
||||
) -> (f64, Option<MagickWand>) {
|
||||
let mut distortion: f64 = 0.0;
|
||||
let result = unsafe {
|
||||
bindings::MagickCompareImages(self.wand, reference.wand, metric, &mut distortion)
|
||||
bindings::MagickCompareImages(self.wand, reference.wand, metric.into(), &mut distortion)
|
||||
};
|
||||
let wand = if result.is_null() {
|
||||
None
|
||||
|
||||
Reference in New Issue
Block a user