diff options
Diffstat (limited to 'src/griph/mod.rs')
-rw-r--r-- | src/griph/mod.rs | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/src/griph/mod.rs b/src/griph/mod.rs index b034207..6b84233 100644 --- a/src/griph/mod.rs +++ b/src/griph/mod.rs @@ -6,8 +6,10 @@ pub const DARK_PALETTE: &[u8] = &[ 192, 192, 192, // Graphline - Mostly White 64, 64, 64, // Gridlines - Dark gray 32, 32, 32, // Minor Gridlines - Darker gray - 48, 48, 192, // Primary 2 Colour - Blue + 144, 144, 255, // Primary 2 Colour - Blue 48, 192, 48, // Secondary 2 Colour - Green + 96, 96, 224, // Primary Underfill - Light Blue + 48, 128, 48, // Secondary Underfill - Lesser Green ]; const BACKGROUND: u8 = 0; @@ -16,6 +18,8 @@ const GRIDLINE: u8 = 2; const MINOR_GRIDLINE: u8 = 3; const LINE1: u8 = 4; const LINE2: u8 = 5; +const LINE1_FILL: u8 = 6; +const LINE2_FILL: u8 = 7; const WIDTH: usize = 256; const HEIGHT: usize = 160; @@ -48,8 +52,8 @@ pub fn make_2line(min: usize, max: usize, values1: &[usize], values2: &[usize]) let mut raster = vec![0; SIZE]; draw_grid(&mut raster); - draw_line(&mut raster, values1, vpp, LINE1); - draw_line(&mut raster, values2, vpp, LINE2); + draw_line_underfill(&mut raster, values1, vpp, LINE1, LINE1_FILL); + draw_line_underfill(&mut raster, values2, vpp, LINE2, LINE2_FILL); let mut standard = Gif::new(WIDTH as u16, HEIGHT as u16); standard.set_palette(Some(DARK_PALETTE.try_into().unwrap())); @@ -96,3 +100,24 @@ fn draw_line(raster: &mut [u8], values: &[usize], vpp: usize, colour: u8) { raster[y_val * WIDTH + x] = colour; } } + +fn draw_line_underfill( + raster: &mut [u8], + values: &[usize], + vpp: usize, + colour: u8, + colour_fill: u8, +) { + for (x, value) in values.iter().enumerate() { + let value_height = value / vpp; + if value_height > (HEIGHT - 1) { + continue; + } + let y_val = (HEIGHT - 1) - value_height; + + for y in y_val + 1..HEIGHT { + raster[y * WIDTH + x] = colour_fill; + } + raster[y_val * WIDTH + x] = colour; + } +} |