diff --git a/src/trekstor.rs b/src/trekstor.rs index 0a95357..484541b 100644 --- a/src/trekstor.rs +++ b/src/trekstor.rs @@ -1,6 +1,7 @@ use std::rc::Rc; use evdev::KeyCode; +use linfb::shape::Color; use slint::LogicalPosition; use slint::platform::software_renderer::{MinimalSoftwareWindow, RepaintBufferType}; use slint::platform::{Platform, WindowEvent}; @@ -70,14 +71,19 @@ impl Platform for Trekstor { self.window.draw_if_needed(|renderer| { dbg!("Rendering"); renderer.render(&mut buffer1, ctx.screen.width() as usize); + for (i, px) in buffer1.into_iter().enumerate() { + let x = (i % ctx.screen.width() as usize) as u32; + let y = (i / ctx.screen.width() as usize) as u32; - // ctx - // .screen - // .fill_contiguous(&ctx.screen.rect(), buffer1) - // .ok(); + ctx.screen.framebuffer.set_pixel( + x, + y, + Color::from((px.r(), px.b(), px.b(), px.a())), + ); + } + ctx.screen.flush(); }); - ctx.screen.flush(); ctx.input.finish(); } } diff --git a/src/trekstor/screen.rs b/src/trekstor/screen.rs index b39828e..53c6a80 100644 --- a/src/trekstor/screen.rs +++ b/src/trekstor/screen.rs @@ -4,7 +4,7 @@ use linfb::{Framebuffer, shape::Color}; use crate::rgba::Rgba; pub struct Screen { - framebuffer: Framebuffer, + pub framebuffer: Framebuffer, width: u32, height: u32, }