Draw bar for backlight

This commit is contained in:
Kenny Levinsen
2019-08-01 00:09:51 +02:00
parent e426e1f884
commit 14a1611e9e
4 changed files with 48 additions and 10 deletions
+11 -3
View File
@@ -1,6 +1,6 @@
use crate::buffer::Buffer; use crate::buffer::Buffer;
use crate::color::Color; use crate::color::Color;
use crate::draw::{draw_text, ROBOTO_REGULAR}; use crate::draw::{draw_bar, draw_text, ROBOTO_REGULAR};
use crate::module::{Input, ModuleImpl}; use crate::module::{Input, ModuleImpl};
use chrono::{DateTime, Local}; use chrono::{DateTime, Local};
@@ -103,12 +103,20 @@ impl ModuleImpl for Backlight {
buf.memset(bg); buf.memset(bg);
draw_text( draw_text(
ROBOTO_REGULAR, ROBOTO_REGULAR,
&mut buf.subdimensions((0, 0, 256, 24)), &mut buf.subdimensions((0, 0, 128, 24)),
bg, bg,
&Color::new(1.0, 1.0, 1.0, 1.0), &Color::new(1.0, 1.0, 1.0, 1.0),
24.0, 24.0,
&format!("backlight: {:}%", self.brightness() as u8), "backlight",
)?; )?;
draw_bar(
&mut buf.subdimensions((128, 0, 384, 24)),
bg,
&Color::new(1.0, 1.0, 1.0, 1.0),
384,
24,
self.brightness() / 100.0,
);
Ok(vec![buf.get_signed_bounds()]) Ok(vec![buf.get_signed_bounds()])
} }
+23
View File
@@ -101,3 +101,26 @@ pub fn draw_text_fixed_width(
Ok(()) Ok(())
} }
pub fn draw_bar(
buf: &mut Buffer,
background_color: &Color,
color: &Color,
length: u32,
height: u32,
fill: f32,
) -> Result<(), ::std::io::Error> {
let mut buf = buf.subdimensions((0, 0, length, height));
let mut fill_pos = (((length as f32) * fill) as u32);
if fill_pos > length {
fill_pos = length;
}
for y in 0..height {
for x in 0..fill_pos {
buf.put((x, y), &background_color.blend(color, 1.0));
}
}
Ok(())
}
+1 -1
View File
@@ -369,7 +369,7 @@ impl App {
]; ];
if let Ok(m) = Backlight::new() { if let Ok(m) = Backlight::new() {
modules.push(Module::new(Box::new(m), (720, 0, 256, 24))); modules.push(Module::new(Box::new(m), (720, 0, 512, 32)));
} }
App { App {
+13 -6
View File
@@ -11,12 +11,19 @@ pub enum Input {
} }
impl Input { impl Input {
pub fn offset(&self, offset: (u32, u32)) -> Input{ pub fn offset(&self, offset: (u32, u32)) -> Input {
match self { match self {
Input::Click{pos, button} => Input::Click{pos: (pos.0 - offset.0, pos.1 - offset.1), button: *button}, Input::Click { pos, button } => Input::Click {
Input::Scroll{pos, x, y} => Input::Scroll{pos: (pos.0 - offset.0, pos.1 - offset.1), x: *x, y: *y}, pos: (pos.0 - offset.0, pos.1 - offset.1),
} button: *button,
} },
Input::Scroll { pos, x, y } => Input::Scroll {
pos: (pos.0 - offset.0, pos.1 - offset.1),
x: *x,
y: *y,
},
}
}
} }
pub trait ModuleImpl { pub trait ModuleImpl {