1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//! Prepare an image for data extraction

mod blockedmean;

pub use self::blockedmean::BlockedMean;

/// Prepare the source image for data extraction, for example by converting it to black/white
///
/// IMG type should be the type of the source image
/// PREPD type should be the type of the output image. It does not have to be the same as the IMG type
///
/// Pre-implemented Prepare provided by this library that are included in the default [`Decoder`]:
/// * [`BlockedMean`]
///
/// # Example
/// ```
/// # extern crate bardecoder;
/// # extern crate image;
/// # use image::{DynamicImage, GrayImage};
/// use bardecoder::prepare::Prepare;
///
/// struct MyPreparator {}
///
/// impl Prepare<DynamicImage, GrayImage> for MyPreparator {
///     fn prepare(&self, input: DynamicImage) -> GrayImage {
///         // prepare image here
/// #       input.to_luma()
///     }
/// }
/// ```
///
/// with the corresponding impl Prepare being the Example [`here`]
///
/// [`Decoder`]: ../struct.Decoder.html
/// [`Detect`]: ../detect/trait.Detect.html
/// [`here`]: ../prepare/trait.Prepare.html
pub trait Prepare<IMG, PREPD> {
    /// Does the actual preparing
    fn prepare(&self, source: IMG) -> PREPD;
}