diff --git a/src/main.rs b/src/main.rs index 53e7ac9..d31b558 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,19 +1,11 @@ -use std::{ - env, - ffi::OsStr, - fs, - io::{Read, Write}, - path::Path, -}; +use std::{env, ffi::OsStr, fs, io::Write, path::Path}; use iced::{ Alignment, Color, Element, Length, Renderer, Subscription, Task, Theme, color, event, keyboard::{self, Key, key}, theme, widget, window, }; -use image::{ - DynamicImage, EncodableLayout, ImageDecoder, ImageReader, RgbImage, RgbaImage, imageops, -}; +use image::{DynamicImage, EncodableLayout, ImageDecoder, ImageReader, RgbaImage, imageops}; use jpegxl_rs::image::ToDynamic; use rfd::FileDialog; @@ -89,20 +81,24 @@ impl State { } Key::Character("r") => { - let Some(image) = self.image.as_ref() else { - eprintln!("no image to rotate"); - return Task::none(); + match self.image.as_ref() { + None => self.error = Some("no image to rotate".into()), + Some(image) => { + self.error = None; + self.image = Some(imageops::rotate90(image)); + return self.allocate_image(); + } }; - self.image = Some(imageops::rotate90(image)); - return self.allocate_image(); } Key::Character("i") => { - let Some(image) = self.image.as_mut() else { - eprintln!("no image to invert"); - return Task::none(); + match self.image.as_mut() { + None => self.error = Some("no image to invert".into()), + Some(image) => { + self.error = None; + imageops::invert(image); + return self.allocate_image(); + } }; - imageops::invert(image); - return self.allocate_image(); } Key::Character("s") => { @@ -149,12 +145,14 @@ impl State { path.display() )); } - Err(e) => return Some(format!("faled to decode '{}' {e}", path.display())), + Err(e) => { + return Some(format!("failed to decode jxl '{}': {e}", path.display())); + } } } _ => { - let reader = match ImageReader::open(&path) { + let reader = match ImageReader::open(path) { Ok(r) => r, Err(e) => { return Some(format!( @@ -274,7 +272,7 @@ impl State { widget::image::allocate(widget::image::Handle::from_rgba( image.width(), image.height(), - unsafe { std::mem::transmute::<_, &'static [u8]>(image.as_bytes()) }, + unsafe { std::mem::transmute::<&[u8], &'static [u8]>(image.as_bytes()) }, )) .map(Message::ImageDisplayReady) }