use crate::bank::{CompileConfig, CompiledTemplate};
use crate::image::{ImageView, OwnedImage};
use crate::util::CorrMatchResult;
mod plan;
pub mod rotate;
pub use plan::ValidCoord;
pub use plan::{MaskedSsdTemplatePlan, MaskedTemplatePlan, SsdTemplatePlan, TemplatePlan};
pub struct Template {
img: OwnedImage,
}
impl Template {
pub fn new(data: Vec<u8>, width: usize, height: usize) -> CorrMatchResult<Self> {
let img = OwnedImage::new(data, width, height)?;
Ok(Self { img })
}
pub fn width(&self) -> usize {
self.img.width()
}
pub fn height(&self) -> usize {
self.img.height()
}
pub fn view(&self) -> ImageView<'_, u8> {
self.img.view()
}
pub fn compile(&self, cfg: CompileConfig) -> CorrMatchResult<CompiledTemplate> {
CompiledTemplate::compile_rotated(self, cfg)
}
}