use super::InterpolateMode;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, serde::Deserialize, serde::Serialize)]
pub enum GridSamplePaddingMode {
#[default]
Zeros,
Border,
Reflection,
}
#[derive(Debug, Clone)]
pub struct GridSampleOptions {
pub mode: InterpolateMode,
pub padding_mode: GridSamplePaddingMode,
pub align_corners: bool,
}
impl Default for GridSampleOptions {
fn default() -> Self {
Self {
mode: InterpolateMode::Bilinear,
padding_mode: GridSamplePaddingMode::Zeros,
align_corners: false,
}
}
}
impl From<InterpolateMode> for GridSampleOptions {
fn from(value: InterpolateMode) -> Self {
GridSampleOptions::new(value)
}
}
impl GridSampleOptions {
pub fn new(mode: InterpolateMode) -> Self {
Self {
mode,
..Default::default()
}
}
pub fn with_padding_mode(mut self, padding_mode: GridSamplePaddingMode) -> Self {
self.padding_mode = padding_mode;
self
}
pub fn with_align_corners(mut self, align_corners: bool) -> Self {
self.align_corners = align_corners;
self
}
}