Move the Driver away from the builder pattern and use mutators instead

This commit is contained in:
2020-09-07 17:46:42 -07:00
parent 14fa68bfb2
commit 5d61765a84
3 changed files with 13 additions and 16 deletions

View File

@@ -2,9 +2,9 @@ use coremem::{Driver, mat};
fn main() {
let width = 201;
let mut driver = Driver::new(width, 101, 1e-3 /* feature size */)
.with_y4m_renderer("em_reflection.y4m")
.with_term_renderer();
let mut driver = Driver::new(width, 101, 1e-3 /* feature size */);
driver.add_y4m_renderer("em_reflection.y4m");
driver.add_term_renderer();;
for inset in 0..20 {
for x in 0..width {

View File

@@ -3,11 +3,10 @@ use coremem::{Driver, mat};
fn main() {
let width = 1300;
let height = 1000;
let mut driver = Driver::new(width, height, 1e-5 /* feature size */)
.with_y4m_renderer("ferromagnet.y4m")
.with_term_renderer()
.with_steps_per_frame(40)
;
let mut driver = Driver::new(width, height, 1e-5 /* feature size */);
driver.set_steps_per_frame(40);
driver.add_y4m_renderer("ferromagnet.y4m");
driver.add_term_renderer();
for y in 0..height {
for x in 500..600 {

View File

@@ -22,22 +22,20 @@ impl Driver {
}
}
pub fn with_steps_per_frame(mut self, steps_per_frame: u64) -> Self {
pub fn set_steps_per_frame(&mut self, steps_per_frame: u64) {
self.steps_per_frame = steps_per_frame;
self
}
pub fn with_renderer<R: Renderer + 'static>(mut self, renderer: R) -> Self {
pub fn add_renderer<R: Renderer + 'static>(&mut self, renderer: R) {
self.renderer.push(renderer);
self
}
pub fn with_y4m_renderer<S: Into<PathBuf>>(self, output: S) -> Self {
self.with_renderer(render::Y4MRenderer::new(output))
pub fn add_y4m_renderer<S: Into<PathBuf>>(&mut self, output: S) {
self.add_renderer(render::Y4MRenderer::new(output));
}
pub fn with_term_renderer(self) -> Self {
self.with_renderer(render::ColorTermRenderer)
pub fn add_term_renderer(&mut self) {
self.add_renderer(render::ColorTermRenderer);
}
pub fn add_boundary(&mut self, thickness: u32) {