From bafb1df8b7764a0a62f1c656eb52fbe7bfd8b8ac Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 6 Dec 2022 07:47:51 +0100 Subject: decoder --- evc/src/frame.rs | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'evc/src/frame.rs') diff --git a/evc/src/frame.rs b/evc/src/frame.rs index 6e565b6..1269bf2 100644 --- a/evc/src/frame.rs +++ b/evc/src/frame.rs @@ -1,4 +1,8 @@ -use crate::{pixel::Pixel, ser::Source, view::View}; +use crate::{ + pixel::Pixel, + ser::{Sink, Source}, + view::View, +}; use std::{ io, ops::{Index, IndexMut}, @@ -20,15 +24,30 @@ impl Frame { } pub fn read(source: &mut impl Source, size: (usize, usize)) -> io::Result { let mut frame = Frame::new(size); - for x in 0..size.0 { - for y in 0..size.1 { + for y in 0..size.1 { + for x in 0..size.0 { let pixel = source.get::()?; frame[(x, y)] = pixel; } } Ok(frame) } - pub fn view<'a>(&'a self, offset: (usize, usize), size: (usize, usize)) -> View<'a> { + pub fn write(&self, sink: &mut impl Sink) -> io::Result<()> { + for y in 0..self.size.1 { + for x in 0..self.size.0 { + sink.put(self[(x, y)])?; + } + } + Ok(()) + } + pub fn view<'a>(&'a self, offset: (usize, usize), size: (usize, usize)) -> View<&'a Frame> { + View::new(self, offset, size) + } + pub fn view_mut<'a>( + &'a mut self, + offset: (usize, usize), + size: (usize, usize), + ) -> View<&'a mut Frame> { View::new(self, offset, size) } } -- cgit v1.2.3-70-g09d2