wipe/src/fill/stripes.rs
2022-04-09 19:29:30 +02:00

35 lines
695 B
Rust

use crate::FillMode;
use crate::vec::Vector;
const INTERVAL: f32 = 4.0;
pub struct StripesFillMode {
interval: f32
}
impl StripesFillMode {
pub fn new(size: Vector) -> Self {
Self {
interval: size.smaller() / INTERVAL
}
}
}
impl FillMode for StripesFillMode {
fn sample(&self, _: f32, pos: Vector) -> f32 {
(pos.sum() % self.interval) / self.interval
}
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn sample() {
let mode = StripesFillMode::new(Vector::new(8.0, 4.0));
assert_eq!(0.25, mode.sample(0.0, Vector::new(1.5, 0.75)));
assert_eq!(0.5, mode.sample(0.0, Vector::new(4.0, 2.5)));
}
}