From bcf4f44cfb6382b8fc41601496e678c4911f757a Mon Sep 17 00:00:00 2001 From: yggverse Date: Thu, 13 Feb 2025 19:19:09 +0200 Subject: [PATCH] handle bitmap images --- .../window/tab/item/client/driver/file.rs | 7 +++++- .../tab/item/client/driver/file/image.rs | 22 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 src/app/browser/window/tab/item/client/driver/file/image.rs diff --git a/src/app/browser/window/tab/item/client/driver/file.rs b/src/app/browser/window/tab/item/client/driver/file.rs index f8218b85..62c0b043 100644 --- a/src/app/browser/window/tab/item/client/driver/file.rs +++ b/src/app/browser/window/tab/item/client/driver/file.rs @@ -1,3 +1,4 @@ +mod image; mod status; mod text; @@ -24,6 +25,7 @@ impl File { glib::Priority, prelude::{FileExt, FileExtManual}, }; + use image::Image; use status::Status; use text::Text; @@ -98,7 +100,10 @@ impl File { } } "image/png" | "image/gif" | "image/jpeg" | "image/webp" => { - todo!() + match gtk::gdk::Texture::from_file(&file) { + Ok(texture) => Image::Bitmap(uri, texture).handle(page), + Err(e) => Status::Failure(e.to_string()).handle(page), + } } mime => Status::Failure(format!( "Content type `{mime}` yet not supported" diff --git a/src/app/browser/window/tab/item/client/driver/file/image.rs b/src/app/browser/window/tab/item/client/driver/file/image.rs new file mode 100644 index 00000000..562b36bb --- /dev/null +++ b/src/app/browser/window/tab/item/client/driver/file/image.rs @@ -0,0 +1,22 @@ +use super::Page; +use gtk::{gdk::Texture, glib::Uri}; +use std::rc::Rc; + +pub enum Image { + Bitmap(Uri, Texture), + // @TODO Vector(Uri, String), +} + +impl Image { + pub fn handle(&self, page: Rc) { + let uri = match self { + Self::Bitmap(uri, texture) => { + page.content.to_image(texture); + uri + } + }; + page.set_title(&crate::tool::uri_to_title(uri)); + page.set_progress(0.0); + page.window_action.find.simple_action.set_enabled(false); + } +}