소스 검색

Remove image at runtime

Aster 3 년 전
부모
커밋
21b436b7bf
3개의 변경된 파일28개의 추가작업 그리고 10개의 파일을 삭제
  1. 1 1
      packages/desktop/Cargo.toml
  2. 27 9
      packages/desktop/src/cfg.rs
  3. BIN
      packages/desktop/src/default_icon.bin

+ 1 - 1
packages/desktop/Cargo.toml

@@ -32,7 +32,6 @@ dioxus-html = { path = "../html", features = ["serialize"], version = "^0.1.6" }
 webbrowser = "0.5.5"
 mime_guess = "2.0.3"
 dioxus-interpreter-js = { path = "../interpreter", version = "^0.0.0" }
-image = "0.24.0"
 
 
 [features]
@@ -42,3 +41,4 @@ tokio_runtime = ["tokio"]
 
 [dev-dependencies]
 dioxus-hooks = { path = "../hooks" }
+image = "0.24.0"

+ 27 - 9
packages/desktop/src/cfg.rs

@@ -1,6 +1,3 @@
-use image::io::Reader as ImageReader;
-use image::ImageFormat;
-use std::io::Cursor;
 use wry::application::window::Icon;
 use wry::{
     application::{
@@ -91,12 +88,8 @@ impl DesktopConfig {
 
 impl DesktopConfig {
     pub(crate) fn with_default_icon(mut self) -> Self {
-        let png: &[u8] = include_bytes!("default_icon.png");
-        let mut reader = ImageReader::new(Cursor::new(png));
-        reader.set_format(ImageFormat::Png);
-        let icon = reader.decode().expect("image parse failed");
-        let rgba = Icon::from_rgba(icon.as_bytes().to_owned(), icon.width(), icon.height())
-            .expect("image parse failed");
+        let bin: &[u8] = include_bytes!("default_icon.bin");
+        let rgba = Icon::from_rgba(bin.to_owned(), 460, 460).expect("image parse failed");
         self.window.window.window_icon = Some(rgba);
         self
     }
@@ -107,3 +100,28 @@ impl Default for DesktopConfig {
         Self::new()
     }
 }
+
+// dirty trick, avoid introducing `image` at runtime
+// TODO: use serde when `Icon` impl serde
+#[test]
+#[ignore]
+fn prepare_default_icon() {
+    use image::io::Reader as ImageReader;
+    use image::ImageFormat;
+    use std::fs::File;
+    use std::io::Cursor;
+    use std::io::Write;
+    use std::path::PathBuf;
+    let png: &[u8] = include_bytes!("default_icon.png");
+    let mut reader = ImageReader::new(Cursor::new(png));
+    reader.set_format(ImageFormat::Png);
+    let icon = reader.decode().unwrap();
+    let bin = PathBuf::from(file!())
+        .parent()
+        .unwrap()
+        .join("default_icon.bin");
+    println!("{:?}", bin);
+    let mut file = File::create(bin).unwrap();
+    file.write_all(icon.as_bytes()).unwrap();
+    println!("({}, {})", icon.width(), icon.height())
+}

BIN
packages/desktop/src/default_icon.bin