Simplify buffer positioning, introduce WLDASH_SCALE
Replace most uses of Buffer::subdimensions with Buffer::offset. Introduce WLDASH_SCALE. Set to 2 to make wldash render at half size.
This commit is contained in:
@@ -11,7 +11,7 @@ Consider this alpha-quality: While it works, *everything* is subject to change w
|
|||||||
3. Put somewhere: `cp target/release/wldash /usr/local/bin/wldash`
|
3. Put somewhere: `cp target/release/wldash /usr/local/bin/wldash`
|
||||||
4. Run: `wldash`
|
4. Run: `wldash`
|
||||||
|
|
||||||
To display wldash on all outputs, set `WLDASH_ALL_OUTPUTS=1`.
|
To display wldash on all outputs, set `WLDASH_ALL_OUTPUTS=1`. To cut size in half, set `WLDASH_SCALE=2`.
|
||||||
|
|
||||||
## How to use launcher
|
## How to use launcher
|
||||||
|
|
||||||
|
|||||||
+13
-8
@@ -43,10 +43,11 @@ struct AppInner {
|
|||||||
draw_tx: Sender<Cmd>,
|
draw_tx: Sender<Cmd>,
|
||||||
output_mode: OutputMode,
|
output_mode: OutputMode,
|
||||||
visible: bool,
|
visible: bool,
|
||||||
|
scale: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AppInner {
|
impl AppInner {
|
||||||
fn new(tx: Sender<Cmd>, output_mode: OutputMode) -> AppInner {
|
fn new(tx: Sender<Cmd>, output_mode: OutputMode, scale: u32) -> AppInner {
|
||||||
AppInner {
|
AppInner {
|
||||||
compositor: None,
|
compositor: None,
|
||||||
surfaces: Vec::new(),
|
surfaces: Vec::new(),
|
||||||
@@ -58,6 +59,7 @@ impl AppInner {
|
|||||||
draw_tx: tx,
|
draw_tx: tx,
|
||||||
output_mode: output_mode,
|
output_mode: output_mode,
|
||||||
visible: true,
|
visible: true,
|
||||||
|
scale: scale,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,6 +67,7 @@ impl AppInner {
|
|||||||
compositor: &wl_compositor::WlCompositor,
|
compositor: &wl_compositor::WlCompositor,
|
||||||
shell: &zwlr_layer_shell_v1::ZwlrLayerShellV1,
|
shell: &zwlr_layer_shell_v1::ZwlrLayerShellV1,
|
||||||
dimensions: (u32, u32),
|
dimensions: (u32, u32),
|
||||||
|
scale: u32,
|
||||||
configured_surfaces: Arc<Mutex<usize>>,
|
configured_surfaces: Arc<Mutex<usize>>,
|
||||||
tx: Sender<Cmd>,
|
tx: Sender<Cmd>,
|
||||||
output: Option<&wl_output::WlOutput>,
|
output: Option<&wl_output::WlOutput>,
|
||||||
@@ -99,8 +102,8 @@ impl AppInner {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
shell_surface.set_keyboard_interactivity(1);
|
shell_surface.set_keyboard_interactivity(1);
|
||||||
shell_surface.set_size(dimensions.0, dimensions.1);
|
shell_surface.set_size(dimensions.0/scale, dimensions.1/scale);
|
||||||
|
surface.set_buffer_scale(scale as i32);
|
||||||
surface.commit();
|
surface.commit();
|
||||||
(surface, shell_surface)
|
(surface, shell_surface)
|
||||||
}
|
}
|
||||||
@@ -134,6 +137,7 @@ impl AppInner {
|
|||||||
&compositor,
|
&compositor,
|
||||||
&shell,
|
&shell,
|
||||||
self.dimensions,
|
self.dimensions,
|
||||||
|
self.scale,
|
||||||
self.configured_surfaces.clone(),
|
self.configured_surfaces.clone(),
|
||||||
self.draw_tx.clone(),
|
self.draw_tx.clone(),
|
||||||
None,
|
None,
|
||||||
@@ -149,6 +153,7 @@ impl AppInner {
|
|||||||
&compositor,
|
&compositor,
|
||||||
&shell,
|
&shell,
|
||||||
self.dimensions,
|
self.dimensions,
|
||||||
|
self.scale,
|
||||||
self.configured_surfaces.clone(),
|
self.configured_surfaces.clone(),
|
||||||
self.draw_tx.clone(),
|
self.draw_tx.clone(),
|
||||||
Some(&output.1),
|
Some(&output.1),
|
||||||
@@ -271,10 +276,10 @@ impl App {
|
|||||||
for surface in inner.surfaces.iter() {
|
for surface in inner.surfaces.iter() {
|
||||||
surface.attach(Some(&new_buffer), 0, 0);
|
surface.attach(Some(&new_buffer), 0, 0);
|
||||||
if force {
|
if force {
|
||||||
surface.damage(0, 0, buf_x as i32, buf_y as i32);
|
surface.damage_buffer(0, 0, buf_x as i32, buf_y as i32);
|
||||||
} else {
|
} else {
|
||||||
for d in damage.iter() {
|
for d in damage.iter() {
|
||||||
surface.damage(d.0, d.1, d.2, d.3);
|
surface.damage_buffer(d.0, d.1, d.2, d.3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
surface.commit();
|
surface.commit();
|
||||||
@@ -332,8 +337,8 @@ impl App {
|
|||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new(tx: Sender<Cmd>, output_mode: OutputMode) -> App {
|
pub fn new(tx: Sender<Cmd>, output_mode: OutputMode, scale: u32) -> App {
|
||||||
let inner = Arc::new(Mutex::new(AppInner::new(tx.clone(), output_mode)));
|
let inner = Arc::new(Mutex::new(AppInner::new(tx.clone(), output_mode, scale)));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Set up modules
|
// Set up modules
|
||||||
@@ -527,7 +532,7 @@ impl App {
|
|||||||
surface_y,
|
surface_y,
|
||||||
..
|
..
|
||||||
} => {
|
} => {
|
||||||
pos = (surface_x as u32, surface_y as u32);
|
pos = (surface_x as u32 * scale, surface_y as u32 * scale);
|
||||||
}
|
}
|
||||||
wl_pointer::Event::Axis { axis, value, .. } => {
|
wl_pointer::Event::Axis { axis, value, .. } => {
|
||||||
if axis == wl_pointer::Axis::VerticalScroll {
|
if axis == wl_pointer::Axis::VerticalScroll {
|
||||||
|
|||||||
@@ -67,6 +67,35 @@ impl<'a> Buffer<'a> {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn offset(
|
||||||
|
&mut self,
|
||||||
|
offset: (u32, u32),
|
||||||
|
) -> Result<Buffer, ::std::io::Error> {
|
||||||
|
let bounds = self.get_bounds();
|
||||||
|
if offset.0 > bounds.2
|
||||||
|
|| offset.1 > bounds.3
|
||||||
|
{
|
||||||
|
return Err(::std::io::Error::new(
|
||||||
|
::std::io::ErrorKind::Other,
|
||||||
|
format!(
|
||||||
|
"cannot create offset outside buffer: {:?} > {:?}",
|
||||||
|
offset, bounds
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(Buffer {
|
||||||
|
buf: self.buf,
|
||||||
|
dimensions: self.dimensions,
|
||||||
|
subdimensions: Some((
|
||||||
|
offset.0 + bounds.0,
|
||||||
|
offset.1 + bounds.1,
|
||||||
|
bounds.2 - offset.0,
|
||||||
|
bounds.3 - offset.1,
|
||||||
|
)),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
pub fn memset(&mut self, c: &Color) {
|
pub fn memset(&mut self, c: &Color) {
|
||||||
if let Some(subdim) = self.subdimensions {
|
if let Some(subdim) = self.subdimensions {
|
||||||
unsafe {
|
unsafe {
|
||||||
|
|||||||
@@ -230,8 +230,6 @@ impl Font {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn draw_box(buf: &mut Buffer, c: &Color, dim: (u32, u32)) -> Result<(), ::std::io::Error> {
|
pub fn draw_box(buf: &mut Buffer, c: &Color, dim: (u32, u32)) -> Result<(), ::std::io::Error> {
|
||||||
let mut buf = buf.subdimensions((0, 0, dim.0, dim.1))?;
|
|
||||||
|
|
||||||
for x in 0..dim.0 {
|
for x in 0..dim.0 {
|
||||||
let _ = buf.put((x, 0), c);
|
let _ = buf.put((x, 0), c);
|
||||||
let _ = buf.put((x, dim.1 - 1), c);
|
let _ = buf.put((x, dim.1 - 1), c);
|
||||||
@@ -251,8 +249,6 @@ pub fn draw_bar(
|
|||||||
height: u32,
|
height: u32,
|
||||||
fill: f32,
|
fill: f32,
|
||||||
) -> Result<(), ::std::io::Error> {
|
) -> Result<(), ::std::io::Error> {
|
||||||
let mut buf = buf.subdimensions((0, 0, length, height))?;
|
|
||||||
|
|
||||||
let mut fill_pos = ((length as f32) * fill) as u32;
|
let mut fill_pos = ((length as f32) * fill) as u32;
|
||||||
if fill_pos > length {
|
if fill_pos > length {
|
||||||
fill_pos = length;
|
fill_pos = length;
|
||||||
|
|||||||
+5
-1
@@ -29,6 +29,10 @@ fn main() {
|
|||||||
Ok(dir) => dir + "/wldash",
|
Ok(dir) => dir + "/wldash",
|
||||||
Err(_) => "/tmp/wldash".to_string(),
|
Err(_) => "/tmp/wldash".to_string(),
|
||||||
};
|
};
|
||||||
|
let scale = match env::var("WLDASH_SCALE") {
|
||||||
|
Ok(s) => s.parse().unwrap(),
|
||||||
|
Err(_) => 1,
|
||||||
|
};
|
||||||
|
|
||||||
let args: Vec<String> = env::args().collect();
|
let args: Vec<String> = env::args().collect();
|
||||||
let mode = match args.len() {
|
let mode = match args.len() {
|
||||||
@@ -84,7 +88,7 @@ fn main() {
|
|||||||
Err(_) => OutputMode::Active,
|
Err(_) => OutputMode::Active,
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut app = App::new(tx_draw, output_mode);
|
let mut app = App::new(tx_draw, output_mode, scale);
|
||||||
app.wipe();
|
app.wipe();
|
||||||
|
|
||||||
let worker_queue = app.cmd_queue();
|
let worker_queue = app.cmd_queue();
|
||||||
|
|||||||
@@ -108,19 +108,19 @@ impl ModuleImpl for Backlight {
|
|||||||
buf.memset(bg);
|
buf.memset(bg);
|
||||||
let c = Color::new(1.0, 1.0, 1.0, 1.0);
|
let c = Color::new(1.0, 1.0, 1.0, 1.0);
|
||||||
self.font.draw_text(
|
self.font.draw_text(
|
||||||
&mut buf.subdimensions((0, 0, 128, 24))?,
|
buf,
|
||||||
bg,
|
bg,
|
||||||
&c,
|
&c,
|
||||||
"backlight",
|
"backlight",
|
||||||
)?;
|
)?;
|
||||||
draw_bar(
|
draw_bar(
|
||||||
&mut buf.subdimensions((128, 0, 464, 24))?,
|
&mut buf.offset((128, 0))?,
|
||||||
&c,
|
&c,
|
||||||
464,
|
464,
|
||||||
24,
|
24,
|
||||||
self.brightness(),
|
self.brightness(),
|
||||||
)?;
|
)?;
|
||||||
draw_box(&mut buf.subdimensions((128, 0, 464, 24))?, &c, (464, 24))?;
|
draw_box(&mut buf.offset((128, 0))?, &c, (464, 24))?;
|
||||||
Ok(vec![buf.get_signed_bounds()])
|
Ok(vec![buf.get_signed_bounds()])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -214,13 +214,13 @@ impl ModuleImpl for UpowerBattery {
|
|||||||
};
|
};
|
||||||
|
|
||||||
self.font.draw_text(
|
self.font.draw_text(
|
||||||
&mut buf.subdimensions((0, 0, 128, 24))?,
|
&mut buf.offset((0, 0))?,
|
||||||
bg,
|
bg,
|
||||||
&text_color,
|
&text_color,
|
||||||
"battery",
|
"battery",
|
||||||
)?;
|
)?;
|
||||||
draw_bar(
|
draw_bar(
|
||||||
&mut buf.subdimensions((128, 0, 464, 24))?,
|
&mut buf.offset((128, 0))?,
|
||||||
&bar_color,
|
&bar_color,
|
||||||
464,
|
464,
|
||||||
24,
|
24,
|
||||||
@@ -228,7 +228,7 @@ impl ModuleImpl for UpowerBattery {
|
|||||||
)?;
|
)?;
|
||||||
|
|
||||||
draw_box(
|
draw_box(
|
||||||
&mut buf.subdimensions((128, 0, 464, 24))?,
|
&mut buf.offset((128, 0))?,
|
||||||
&bar_color,
|
&bar_color,
|
||||||
(464, 24),
|
(464, 24),
|
||||||
)?;
|
)?;
|
||||||
|
|||||||
@@ -48,14 +48,14 @@ impl Calendar {
|
|||||||
//
|
//
|
||||||
|
|
||||||
self.month_cache.draw_text(
|
self.month_cache.draw_text(
|
||||||
&mut buf.subdimensions((0, 0, 304, 72))?,
|
buf,
|
||||||
background_color,
|
background_color,
|
||||||
&Color::new(1.0, 1.0, 1.0, 1.0),
|
&Color::new(1.0, 1.0, 1.0, 1.0),
|
||||||
month_str,
|
month_str,
|
||||||
)?;
|
)?;
|
||||||
if time.year() != orig.year() {
|
if time.year() != orig.year() {
|
||||||
self.year_cache.draw_text(
|
self.year_cache.draw_text(
|
||||||
&mut buf.subdimensions((320, 0, 48, 32))?,
|
&mut buf.offset((320, 0))?,
|
||||||
background_color,
|
background_color,
|
||||||
&Color::new(0.8, 0.8, 0.8, 1.0),
|
&Color::new(0.8, 0.8, 0.8, 1.0),
|
||||||
&format!("{:}", time.year()),
|
&format!("{:}", time.year()),
|
||||||
@@ -79,7 +79,7 @@ impl Calendar {
|
|||||||
};
|
};
|
||||||
|
|
||||||
self.day_cache.draw_text(
|
self.day_cache.draw_text(
|
||||||
&mut buf.subdimensions((idx * 48 + 4, (y_off * 32) + 64, 24, 16))?,
|
&mut buf.offset((idx * 48 + 4, (y_off * 32) + 64))?,
|
||||||
background_color,
|
background_color,
|
||||||
&Color::new(1.0, 1.0, 1.0, 1.0),
|
&Color::new(1.0, 1.0, 1.0, 1.0),
|
||||||
&wk_chr,
|
&wk_chr,
|
||||||
@@ -105,7 +105,7 @@ impl Calendar {
|
|||||||
//
|
//
|
||||||
let wk = time.iso_week();
|
let wk = time.iso_week();
|
||||||
self.calendar_cache.draw_text(
|
self.calendar_cache.draw_text(
|
||||||
&mut buf.subdimensions((0 * 48, (y_off * 32) + 64, 32, 32))?,
|
&mut buf.offset((0 * 48, (y_off * 32) + 64))?,
|
||||||
background_color,
|
background_color,
|
||||||
&Color::new(0.75, 0.75, 0.75, 1.0),
|
&Color::new(0.75, 0.75, 0.75, 1.0),
|
||||||
&format!("{:02}", wk.week()),
|
&format!("{:02}", wk.week()),
|
||||||
@@ -123,7 +123,7 @@ impl Calendar {
|
|||||||
};
|
};
|
||||||
|
|
||||||
self.calendar_cache.draw_text(
|
self.calendar_cache.draw_text(
|
||||||
&mut buf.subdimensions((x_pos * 48, (y_off * 32) + 64, 32, 32))?,
|
&mut buf.offset((x_pos * 48, (y_off * 32) + 64))?,
|
||||||
background_color,
|
background_color,
|
||||||
&c,
|
&c,
|
||||||
&format!("{:02}", time.day()),
|
&format!("{:02}", time.day()),
|
||||||
@@ -195,13 +195,13 @@ impl ModuleImpl for Calendar {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
self.draw_month(
|
self.draw_month(
|
||||||
&mut buf.subdimensions((0, 0, 368, 320))?,
|
&mut buf.offset((0, 0))?,
|
||||||
background_color,
|
background_color,
|
||||||
&time,
|
&time,
|
||||||
&t.pred().with_day(1).unwrap(),
|
&t.pred().with_day(1).unwrap(),
|
||||||
)?;
|
)?;
|
||||||
self.draw_month(
|
self.draw_month(
|
||||||
&mut buf.subdimensions((432, 0, 368, 320))?,
|
&mut buf.offset((432, 0))?,
|
||||||
background_color,
|
background_color,
|
||||||
&time,
|
&time,
|
||||||
&t,
|
&t,
|
||||||
@@ -212,7 +212,7 @@ impl ModuleImpl for Calendar {
|
|||||||
t.with_month(t.month() + 1).unwrap()
|
t.with_month(t.month() + 1).unwrap()
|
||||||
};
|
};
|
||||||
self.draw_month(
|
self.draw_month(
|
||||||
&mut buf.subdimensions((864, 0, 368, 320))?,
|
&mut buf.offset((864, 0))?,
|
||||||
background_color,
|
background_color,
|
||||||
&time,
|
&time,
|
||||||
&n,
|
&n,
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ impl ModuleImpl for Clock {
|
|||||||
buf.memset(bg);
|
buf.memset(bg);
|
||||||
|
|
||||||
self.date_cache.draw_text(
|
self.date_cache.draw_text(
|
||||||
&mut buf.subdimensions((0, 0, 240 * 2 + 56, 64))?,
|
buf,
|
||||||
bg,
|
bg,
|
||||||
&Color::new(1.0, 1.0, 1.0, 1.0),
|
&Color::new(1.0, 1.0, 1.0, 1.0),
|
||||||
&format!(
|
&format!(
|
||||||
@@ -71,7 +71,7 @@ impl ModuleImpl for Clock {
|
|||||||
)?;
|
)?;
|
||||||
|
|
||||||
self.clock_cache.draw_text_fixed_width(
|
self.clock_cache.draw_text_fixed_width(
|
||||||
&mut buf.subdimensions((0, 64, 240 * 2 + 56, 256))?,
|
&mut buf.offset((0, 64))?,
|
||||||
bg,
|
bg,
|
||||||
&Color::new(1.0, 1.0, 1.0, 1.0),
|
&Color::new(1.0, 1.0, 1.0, 1.0),
|
||||||
&[120, 120, 56, 120, 120],
|
&[120, 120, 56, 120, 120],
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ impl Launcher {
|
|||||||
Color::new(1.0, 1.0, 1.0, 1.0)
|
Color::new(1.0, 1.0, 1.0, 1.0)
|
||||||
};
|
};
|
||||||
let dim = self.font.borrow_mut().auto_draw_text(
|
let dim = self.font.borrow_mut().auto_draw_text(
|
||||||
&mut buf.subdimensions((0, 0, 1232, 32))?,
|
buf,
|
||||||
bg,
|
bg,
|
||||||
&c,
|
&c,
|
||||||
&self.input,
|
&self.input,
|
||||||
@@ -86,7 +86,7 @@ impl Launcher {
|
|||||||
|
|
||||||
let mut width_remaining: i32 = 1232 - x_off as i32;
|
let mut width_remaining: i32 = 1232 - x_off as i32;
|
||||||
for (idx, m) in self.matches.iter().enumerate() {
|
for (idx, m) in self.matches.iter().enumerate() {
|
||||||
let mut b = match buf.subdimensions((x_off, 0, width_remaining as u32, 32)) {
|
let mut b = match buf.offset((x_off, 0)) {
|
||||||
Ok(b) => b,
|
Ok(b) => b,
|
||||||
Err(_) => break,
|
Err(_) => break,
|
||||||
};
|
};
|
||||||
@@ -135,7 +135,7 @@ impl Launcher {
|
|||||||
.font
|
.font
|
||||||
.borrow_mut()
|
.borrow_mut()
|
||||||
.auto_draw_text(
|
.auto_draw_text(
|
||||||
&mut buf.subdimensions((0, 0, 1232, 32))?,
|
buf,
|
||||||
bg,
|
bg,
|
||||||
&Color::new(1.0, 1.0, 0.0, 1.0),
|
&Color::new(1.0, 1.0, 0.0, 1.0),
|
||||||
"=",
|
"=",
|
||||||
@@ -145,7 +145,7 @@ impl Launcher {
|
|||||||
|
|
||||||
let x_off = if self.input.len() > 0 {
|
let x_off = if self.input.len() > 0 {
|
||||||
let dim = self.font.borrow_mut().auto_draw_text(
|
let dim = self.font.borrow_mut().auto_draw_text(
|
||||||
&mut buf.subdimensions((x_off, 0, 1232 - x_off, 32))?,
|
&mut buf.offset((x_off, 0))?,
|
||||||
bg,
|
bg,
|
||||||
&Color::new(1.0, 1.0, 1.0, 1.0),
|
&Color::new(1.0, 1.0, 1.0, 1.0),
|
||||||
&self.input[1..],
|
&self.input[1..],
|
||||||
@@ -158,7 +158,7 @@ impl Launcher {
|
|||||||
|
|
||||||
if let Some(result) = &self.result {
|
if let Some(result) = &self.result {
|
||||||
self.font.borrow_mut().auto_draw_text(
|
self.font.borrow_mut().auto_draw_text(
|
||||||
&mut buf.subdimensions((x_off, 0, 1232 - x_off, 32))?,
|
&mut buf.offset((x_off, 0))?,
|
||||||
bg,
|
bg,
|
||||||
&Color::new(0.75, 0.75, 0.75, 1.0),
|
&Color::new(0.75, 0.75, 0.75, 1.0),
|
||||||
&format!(" = {:}", result),
|
&format!(" = {:}", result),
|
||||||
@@ -179,7 +179,7 @@ impl Launcher {
|
|||||||
.font
|
.font
|
||||||
.borrow_mut()
|
.borrow_mut()
|
||||||
.auto_draw_text(
|
.auto_draw_text(
|
||||||
&mut buf.subdimensions((0, 0, 1232, 32))?,
|
&mut buf.offset((0, 0))?,
|
||||||
bg,
|
bg,
|
||||||
&Color::new(1.0, 1.0, 0.0, 1.0),
|
&Color::new(1.0, 1.0, 0.0, 1.0),
|
||||||
"!",
|
"!",
|
||||||
@@ -189,7 +189,7 @@ impl Launcher {
|
|||||||
|
|
||||||
if self.input.len() > 0 {
|
if self.input.len() > 0 {
|
||||||
self.font.borrow_mut().auto_draw_text(
|
self.font.borrow_mut().auto_draw_text(
|
||||||
&mut buf.subdimensions((x_off, 0, 1232 - x_off, 32))?,
|
&mut buf.offset((x_off, 0))?,
|
||||||
bg,
|
bg,
|
||||||
&Color::new(1.0, 1.0, 1.0, 1.0),
|
&Color::new(1.0, 1.0, 1.0, 1.0),
|
||||||
&self.input[1..],
|
&self.input[1..],
|
||||||
|
|||||||
@@ -487,20 +487,20 @@ impl ModuleImpl for PulseAudio {
|
|||||||
Color::new(1.0, 1.0, 1.0, 1.0)
|
Color::new(1.0, 1.0, 1.0, 1.0)
|
||||||
};
|
};
|
||||||
self.font.draw_text(
|
self.font.draw_text(
|
||||||
&mut buf.subdimensions((0, 0, 128, 24))?,
|
buf,
|
||||||
bg,
|
bg,
|
||||||
&Color::new(1.0, 1.0, 1.0, 1.0),
|
&Color::new(1.0, 1.0, 1.0, 1.0),
|
||||||
"volume",
|
"volume",
|
||||||
)?;
|
)?;
|
||||||
draw_bar(&mut buf.subdimensions((128, 0, 464, 24))?, &c, 464, 24, vol)?;
|
draw_bar(&mut buf.offset((128, 0))?, &c, 464, 24, vol)?;
|
||||||
let mut iter = 1.0;
|
let mut iter = 1.0;
|
||||||
while vol > 1.0 {
|
while vol > 1.0 {
|
||||||
let c = &Color::new(0.75 / iter, 0.25 / iter, 0.25 / iter, 1.0);
|
let c = &Color::new(0.75 / iter, 0.25 / iter, 0.25 / iter, 1.0);
|
||||||
vol -= 1.0;
|
vol -= 1.0;
|
||||||
iter += 1.0;
|
iter += 1.0;
|
||||||
draw_bar(&mut buf.subdimensions((128, 0, 464, 24))?, &c, 464, 24, vol)?;
|
draw_bar(&mut buf.offset((128, 0))?, &c, 464, 24, vol)?;
|
||||||
}
|
}
|
||||||
draw_box(&mut buf.subdimensions((128, 0, 464, 24))?, &c, (464, 24))?;
|
draw_box(&mut buf.offset((128, 0))?, &c, (464, 24))?;
|
||||||
Ok(vec![buf.get_signed_bounds()])
|
Ok(vec![buf.get_signed_bounds()])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user