This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

✨ Add percent and elapsed time to progress bars

+32 -14
+31 -13
examples/schedule-hell-backbone/src/main.rs
··· 20 20 }; 21 21 22 22 canvas.set_grid_size(16, 10); 23 - canvas.set_background(Color::Black); 23 + canvas.set_background(Black); 24 24 canvas.object_sizes.dot_radius = 7.5; 25 25 26 26 let mut video = Video::<Ctx>::new(canvas); ··· 34 34 backbone(&mut ctx.extra.rng, canvas); 35 35 Ok(()) 36 36 }) 37 - .render("schedule-hell-backbone.mp4".into()) 37 + .each_frame(&|canvas, ctx| { 38 + backbone(&mut ctx.extra.rng, canvas); 39 + Ok(()) 40 + }) 41 + // .each_n_frame(10, &|canvas, ctx| { 42 + // canvas.render_to_svg_file(&format!("framedump-{}.svg", ctx.frame))?; 43 + // Ok(()) 44 + // }) 45 + .render("schedule-hell-backbone.mp4") 38 46 .unwrap(); 39 47 } 40 48 ··· 47 55 for point in 48 56 Region::from((world.topleft(), world.topright().translated(1, 1))) 49 57 { 50 - canvas.root().add( 58 + canvas.root().set( 59 + format!("grid-rows-{point}"), 51 60 Object::Line( 52 61 Point(point.0, world.topleft().1), 53 62 Point(point.0, world.bottomleft().1 + 1), 54 63 grid_thickness * 0.75, 55 64 ) 56 - .colored(Color::White), 65 + .filled(White.translucent(0.05 + rng.random_range(0.0..0.3))), 57 66 ); 58 67 } 59 68 60 69 for point in 61 70 Region::from((world.topleft(), world.bottomleft().translated(1, 1))) 62 71 { 63 - canvas.root().add( 72 + canvas.root().set( 73 + format!("grid-cols-{point}"), 64 74 Object::Line( 65 75 Point(world.topleft().0, point.1), 66 76 Point(world.bottomright().0 + 1, point.1), 67 77 grid_thickness * 0.75, 68 78 ) 69 - .colored(Color::White) 70 - .opacified(0.25 + rng.random_range(0.0..0.3)), 79 + .filled(White.translucent(0.005 + rng.random_range(0.0..0.3))), 71 80 ); 72 81 } 73 82 74 83 let occlusions = canvas.layer("occlusions"); 75 84 76 85 for point in world.enlarged(1, 1) { 77 - occlusions.add(Object::Dot(point).colored(Color::Black)); 86 + occlusions.set( 87 + format!("occlusion-{point}"), 88 + Object::Dot(point).colored(Color::Black), 89 + ); 78 90 } 79 91 80 92 let flickers = canvas.layer("flickers"); 81 93 82 94 for point in world { 83 - flickers.add( 95 + flickers.set( 96 + format!("crosses-SWNE-{point}"), 84 97 Object::Line(point, point.translated(1, 1), grid_thickness) 85 - .colored(Color::Purple), 98 + .colored(Color::Purple) 99 + .opacified(0.25 + rng.random_range(0.5..1.0)), 86 100 ); 87 - flickers.add( 101 + flickers.set( 102 + format!("crosses-NWSE-{point}"), 88 103 Object::Line( 89 104 point.translated(0, 1), 90 105 point.translated(1, 0), 91 106 grid_thickness, 92 107 ) 93 108 .colored(Color::Purple) 94 - .opacified(0.5 + rng.random_range(0.5..1.0)), 109 + .opacified(0.25 + rng.random_range(0.5..1.0)), 95 110 ); 96 111 } 97 112 ··· 99 114 flickers_occlusions.object_sizes.dot_radius = 10.0; 100 115 101 116 for point in world.enlarged(1, 1) { 102 - flickers_occlusions.add(Object::Dot(point).colored(Color::Black)) 117 + flickers_occlusions.set( 118 + format!("crosses-occlusions-{point}"), 119 + Object::Dot(point).colored(Color::Black), 120 + ) 103 121 } 104 122 } 105 123
+1 -1
src/ui.rs
··· 6 6 use std::time; 7 7 8 8 pub const PROGRESS_BARS_STYLE: &str = 9 - "{prefix:>12.bold.cyan} [{bar:25}] {pos}/{len}: {msg} ({eta} left)"; 9 + "{prefix:>12.bold.cyan} {percent:03}% [{bar:25}] {pos}/{len}: {msg} ({elapsed} ago, {eta} left)"; 10 10 11 11 pub struct Spinner { 12 12 pub spinner: ProgressBar,