-#[get("/gen/4/{scale}")]
-async fn img_gen4(req: HttpRequest, path: web::Path<u32>) -> Result<impl Responder> {
- let scale = path.into_inner();
- let signal = &mut extract_header!(req, "user-agent").bytes();
- let mut resimg: RgbImage = ImageBuffer::new(1600, 600);
- let mut x: f32 = 0.0;
+#[get("/gen/4/{dim_x}/{dim_y}/{scale}/{wave_offset_x}/{wave_offset_y}/{amplitude}/{freq}/{run}/{wave_color}/{data}")]
+async fn img_gen4(req: HttpRequest, path: web::Path<(u32, u32, u32, u32, u32, f32, f32, u32)>) -> Result<impl Responder> {
+ let (dim_x, dim_y, scale, wave_offset_x, wave_offset_y, amplitude, freq_base, run) = path.into_inner();
+ let freq_base = freq_base / 1000.0;
+ let run: f32 = run as f32;
+ let wave_offset_y: f32 = wave_offset_y as f32;
+ let wave_color = extract_data!(req, 11);
+ debug!("Wave color input: {:?}", wave_color);
+ let wave_color = ToRgbIter::new(&mut percent_decode_str(wave_color)).next().unwrap_or(Rgb([255, 255, 255]));
+ debug!("Decoded color: {:?}", wave_color);
+ let signal = &mut percent_decode_str(extract_data!(req, 12)).peekable();
+ let mut resimg: RgbImage = ImageBuffer::new(dim_x, dim_y);
+ let mut x: f32 = wave_offset_x as f32;