From a4a142dc5346e11a485ebc9790b70f73d98268ed Mon Sep 17 00:00:00 2001 From: Peter Majchrak Date: Tue, 4 Sep 2018 23:04:17 +0200 Subject: [PATCH 1/2] Add read_frame --- src/lib.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 8ae0106..ade73da 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,7 +9,7 @@ use libc::ioctl; use std::error::Error; use std::fmt; use std::fs::{File, OpenOptions}; -use std::io::Write; +use std::io::{Read, Write}; use std::os::unix::io::AsRawFd; use std::path::Path; @@ -201,6 +201,13 @@ impl Framebuffer { .unwrap(); } + ///Reads a frame from the Framebuffer. + pub fn read_frame(&mut self, frame: &mut Vec) { + unsafe { self.frame.as_slice() } + .read_to_end(frame) + .unwrap(); + } + ///Creates a FixScreeninfo struct and fills it using ioctl. pub fn get_fix_screeninfo(device: &File) -> Result { let mut info: FixScreeninfo = Default::default(); From fb04219ae3815a3df94d7920fa4b481c229f7dbf Mon Sep 17 00:00:00 2001 From: Peter Majchrak Date: Wed, 5 Sep 2018 13:30:36 +0200 Subject: [PATCH 2/2] Impl Index for Framebuffer --- src/lib.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index ade73da..6cd83fe 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,6 +12,7 @@ use std::fs::{File, OpenOptions}; use std::io::{Read, Write}; use std::os::unix::io::AsRawFd; use std::path::Path; +use std::ops::Index; use memmap::{Mmap, Protection}; @@ -202,7 +203,7 @@ impl Framebuffer { } ///Reads a frame from the Framebuffer. - pub fn read_frame(&mut self, frame: &mut Vec) { + pub fn read_frame(&self, frame: &mut Vec) { unsafe { self.frame.as_slice() } .read_to_end(frame) .unwrap(); @@ -259,3 +260,12 @@ impl Framebuffer { } } } + +impl Index for Framebuffer { + type Output = u8; + + fn index(&self, index: usize) -> &u8 { + unsafe { self.frame.as_slice() } + .index(index) + } +}