Generalize rendering into a trait
This commit is contained in:
@@ -7,8 +7,12 @@ use y4m::{Colorspace, encode, Encoder, Frame, Ratio};
|
||||
|
||||
pub struct NumericTermRenderer;
|
||||
|
||||
impl NumericTermRenderer {
|
||||
pub fn render(&self, state: &SimState) {
|
||||
pub trait Renderer {
|
||||
fn render(&mut self, state: &SimState);
|
||||
}
|
||||
|
||||
impl Renderer for NumericTermRenderer {
|
||||
fn render(&mut self, state: &SimState) {
|
||||
for y in 0..state.height() {
|
||||
for x in 0..state.width() {
|
||||
let cell = state.get(x, y);
|
||||
@@ -44,8 +48,8 @@ fn curl(x: f64, y: f64) -> f64 {
|
||||
}
|
||||
}
|
||||
|
||||
impl ColorTermRenderer {
|
||||
pub fn render(&self, state: &SimState) {
|
||||
impl Renderer for ColorTermRenderer {
|
||||
fn render(&mut self, state: &SimState) {
|
||||
let mut buf = String::new();
|
||||
let square = "█";
|
||||
for y in 0..state.height() {
|
||||
@@ -82,7 +86,10 @@ impl Y4MRenderer {
|
||||
encoder: None,
|
||||
}
|
||||
}
|
||||
pub fn render(&mut self, state: &SimState) {
|
||||
}
|
||||
|
||||
impl Renderer for Y4MRenderer {
|
||||
fn render(&mut self, state: &SimState) {
|
||||
if self.encoder.is_none() {
|
||||
let writer = File::create(&self.out_path).unwrap();
|
||||
self.encoder = Some(encode(state.width(), state.height(), Ratio::new(30, 1))
|
||||
|
Reference in New Issue
Block a user