about summary refs log tree commit diff
path: root/src/griph
diff options
context:
space:
mode:
Diffstat (limited to 'src/griph')
-rw-r--r--src/griph/mod.rs31
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;
+	}
+}