diff --git a/Cargo.lock b/Cargo.lock index 46d13e5..bb2e9cc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5197,6 +5197,7 @@ dependencies = [ "figcraft-doc", "figcraft-engine", "figcraft-render", + "figcraft-svg", "image", "serde_json", ] diff --git a/assets/app-icon/figcraft-1024.png b/assets/app-icon/figcraft-1024.png index 22a722f..967d1af 100644 Binary files a/assets/app-icon/figcraft-1024.png and b/assets/app-icon/figcraft-1024.png differ diff --git a/assets/app-icon/figcraft.svg b/assets/app-icon/figcraft.svg new file mode 100644 index 0000000..7e30a36 --- /dev/null +++ b/assets/app-icon/figcraft.svg @@ -0,0 +1 @@ + diff --git a/assets/app-icon/hicolor/scalable/apps/ai.storyteller.figcraft.svg b/assets/app-icon/hicolor/scalable/apps/ai.storyteller.figcraft.svg new file mode 100644 index 0000000..7e30a36 --- /dev/null +++ b/assets/app-icon/hicolor/scalable/apps/ai.storyteller.figcraft.svg @@ -0,0 +1 @@ + diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index e295eae..ea28683 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -11,4 +11,5 @@ figcraft-doc = { workspace = true } figcraft-color = { workspace = true } figcraft-render = { workspace = true } figcraft-engine = { workspace = true } +figcraft-svg = { workspace = true } image = { workspace = true } diff --git a/xtask/src/icon.rs b/xtask/src/icon.rs index 17c69c4..9f9d4c8 100644 --- a/xtask/src/icon.rs +++ b/xtask/src/icon.rs @@ -109,6 +109,17 @@ pub fn generate(root: &std::path::Path) -> bool { ico.extend_from_slice(png); } ok &= std::fs::write(dir.join("figcraft.ico"), ico).is_ok(); + // Scalable SVG (same artwork, written by FigCraft's SVG exporter). + let tops: Vec<_> = doc.node(page).map(|p| p.children.clone()).unwrap_or_default(); + match figcraft_svg::export_svg(&doc, &tops, &Default::default()) { + Some(svg) => { + let sd = dir.join("hicolor/scalable/apps"); + let _ = std::fs::create_dir_all(&sd); + ok &= std::fs::write(dir.join("figcraft.svg"), &svg).is_ok(); + ok &= std::fs::write(sd.join("ai.storyteller.figcraft.svg"), &svg).is_ok(); + } + None => ok = false, + } eprintln!("icon: wrote {}", dir.display()); ok }