Make_png now accepts processed data
authorMegaBrutal <code+git@megabrutal.com>
Sat, 25 Jun 2022 22:15:00 +0000 (00:15 +0200)
committerMegaBrutal <code+git@megabrutal.com>
Sat, 25 Jun 2022 22:15:00 +0000 (00:15 +0200)
src/main.rs

index faa1ad85ae956e5345022d8dd05cc5d44c02951b..7b0f6b5338f11567083b4500dce8c70b91d9ace5 100644 (file)
@@ -48,7 +48,6 @@ impl<T: AsPrimitive<u8> + Zero> Iterator for ToRgbIter<'_, T> {
         if let Some(r) = self.iter.next() {
             let g = self.iter.next().unwrap_or(T::zero());
             let b = self.iter.next().unwrap_or(T::zero());
-            println!("{} {} {}", r.as_(), g.as_(), b.as_());
             Some(Rgb([r.as_(), g.as_(), b.as_()]))
         }
         else {
@@ -70,11 +69,11 @@ async fn greet(name: web::Path<String>, req: HttpRequest) -> impl Responder {
     format!("Hello {name}!")
 }
 
-fn make_png(dim_x: u32, dim_y: u32, scale: u32, data: &str) -> Result<Cursor<Vec<u8>>, ImageError> {
+fn make_png(dim_x: u32, dim_y: u32, scale: u32, data: &mut dyn Iterator<Item = u8>) -> Result<Cursor<Vec<u8>>, ImageError> {
     let mut img: RgbImage = ImageBuffer::new(dim_x, dim_y);
     let mut pixels = img.pixels_mut();
 
-    for sp in ToRgbIter::new(percent_decode_str(&data).into_iter().borrow_mut()) {
+    for sp in ToRgbIter::new(data) {
         let mut dp = pixels.next().unwrap();
         println!("{:?}", sp);
         dp.0 = sp.0;
@@ -91,7 +90,7 @@ fn make_png(dim_x: u32, dim_y: u32, scale: u32, data: &str) -> Result<Cursor<Vec
 #[get("/gen/0/{data}")]
 async fn img_gen0(req: HttpRequest) -> Result<impl Responder> {
     let data = req.uri().path().split("/").skip(3).next().unwrap();
-    let cursor = make_png(32, 32, 16, &data)?;
+    let cursor = make_png(32, 32, 16, percent_decode_str(&data).into_iter().borrow_mut())?;
     Ok(HttpResponse::build(StatusCode::OK)
        .content_type("image/png")
        .body(cursor.into_inner()))