From ccc9a83e151b55ef71510817e4e7444ddf96942d Mon Sep 17 00:00:00 2001 From: Keith Simmons Date: Tue, 7 Jan 2020 14:50:32 -0800 Subject: [PATCH] icons --- Cargo.lock | 333 +++++++++++++++++++++++++++++++++++++++++++++++- Cargo.toml | 6 + assets/nvim.ico | Bin 0 -> 85182 bytes build.rs | 7 + src/main.rs | 1 + src/window.rs | 22 +++- 6 files changed, 363 insertions(+), 6 deletions(-) create mode 100644 assets/nvim.ico create mode 100644 build.rs diff --git a/Cargo.lock b/Cargo.lock index c2a849e..8a3c1b4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -335,6 +335,12 @@ dependencies = [ "objc", ] +[[package]] +name = "color_quant" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dbbb57365263e881e805dc77d94697c9118fd94d8da011240555aa7b23445bd" + [[package]] name = "const-random" version = "0.1.6" @@ -423,6 +429,40 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crossbeam-deque" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3aa945d63861bfe624b55d153a39684da1e8c0bc8fba932f7ee3a3c16cea3ca" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils 0.7.0", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils 0.7.0", + "lazy_static", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-queue" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db" +dependencies = [ + "cfg-if", + "crossbeam-utils 0.7.0", +] + [[package]] name = "crossbeam-utils" version = "0.6.6" @@ -433,6 +473,17 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "crossbeam-utils" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4" +dependencies = [ + "autocfg", + "cfg-if", + "lazy_static", +] + [[package]] name = "curl" version = "0.4.25" @@ -463,6 +514,16 @@ dependencies = [ "winapi 0.3.8", ] +[[package]] +name = "deflate" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707b6a7b384888a70c8d2e8650b3e60170dfc6a67bb4aa67b6dfca57af4bedb4" +dependencies = [ + "adler32", + "byteorder", +] + [[package]] name = "derive-new" version = "0.5.8" @@ -471,7 +532,7 @@ checksum = "71f31892cd5c62e414316f2963c5689242c43d8e7bbcaaeca97e5e28c95d91d9" dependencies = [ "proc-macro2 1.0.7", "quote 1.0.2", - "syn", + "syn 1.0.13", ] [[package]] @@ -517,6 +578,12 @@ dependencies = [ "winapi 0.3.8", ] +[[package]] +name = "either" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" + [[package]] name = "env_logger" version = "0.7.1" @@ -567,7 +634,7 @@ checksum = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08" dependencies = [ "proc-macro2 1.0.7", "quote 1.0.2", - "syn", + "syn 1.0.13", "synstructure", ] @@ -749,6 +816,16 @@ dependencies = [ "wasi", ] +[[package]] +name = "gif" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471d90201b3b223f3451cd4ad53e34295f16a1df17b1edf3736d47761c3981af" +dependencies = [ + "color_quant", + "lzw", +] + [[package]] name = "gio" version = "0.4.1" @@ -905,6 +982,15 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "hermit-abi" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff2656d88f158ce120947499e971d743c05dbcbed62e5bd2f38f1698bbc3772" +dependencies = [ + "libc", +] + [[package]] name = "humantime" version = "1.3.0" @@ -914,6 +1000,32 @@ dependencies = [ "quick-error", ] +[[package]] +name = "image" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4be8aaefbe7545dc42ae925afb55a0098f226a3fe5ef721872806f44f57826" +dependencies = [ + "byteorder", + "gif", + "jpeg-decoder", + "num-iter", + "num-rational", + "num-traits", + "png", + "scoped_threadpool", + "tiff", +] + +[[package]] +name = "inflate" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff" +dependencies = [ + "adler32", +] + [[package]] name = "instant" version = "0.1.2" @@ -935,6 +1047,16 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" +[[package]] +name = "jpeg-decoder" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0256f0aec7352539102a9efbcb75543227b7ab1117e0f95450023af730128451" +dependencies = [ + "byteorder", + "rayon", +] + [[package]] name = "kernel32-sys" version = "0.2.2" @@ -1041,6 +1163,12 @@ dependencies = [ "lyon_geom", ] +[[package]] +name = "lzw" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d947cbb889ed21c2a84be6ffbaebf5b4e0f4340638cba0444907e38b56be084" + [[package]] name = "malloc_buf" version = "0.0.6" @@ -1072,6 +1200,15 @@ dependencies = [ "winapi 0.3.8", ] +[[package]] +name = "memoffset" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9" +dependencies = [ + "rustc_version", +] + [[package]] name = "metal" version = "0.17.1" @@ -1159,12 +1296,15 @@ dependencies = [ "env_logger", "euclid", "font-kit", + "image", "lru", "msgbox", "neovim-lib", "rmpv", + "rust-embed", "skribo", "skulpin", + "winres", ] [[package]] @@ -1217,6 +1357,49 @@ dependencies = [ "version_check", ] +[[package]] +name = "num-derive" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eafd0b45c5537c3ba526f79d3e75120036502bebacbb3f3220914067ce39dbf2" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", +] + +[[package]] +name = "num-integer" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bd5272412d173d6bf9afdf98db8612bbabc9a7a830b7bfc9c188911716132e" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2885278d5fe2adc2f75ced642d52d879bffaceb5a2e0b1d4309ffdfb239b454" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.10" @@ -1226,6 +1409,16 @@ dependencies = [ "autocfg", ] +[[package]] +name = "num_cpus" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76dac5ed2a876980778b8b85f75a71b6cbf0db0b1232ee12f826bccb00d09d72" +dependencies = [ + "hermit-abi", + "libc", +] + [[package]] name = "objc" version = "0.2.7" @@ -1342,6 +1535,18 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" +[[package]] +name = "png" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef859a23054bbfee7811284275ae522f0434a3c8e7f4b74bd4a35ae7e1c4a283" +dependencies = [ + "bitflags", + "crc32fast", + "deflate", + "inflate", +] + [[package]] name = "ppv-lite86" version = "0.2.6" @@ -1356,7 +1561,7 @@ checksum = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" dependencies = [ "proc-macro2 1.0.7", "quote 1.0.2", - "syn", + "syn 1.0.13", ] [[package]] @@ -1480,6 +1685,30 @@ dependencies = [ "libc", ] +[[package]] +name = "rayon" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db6ce3297f9c85e16621bb8cca38a06779ffc31bb8184e1be4bed2be4678a098" +dependencies = [ + "crossbeam-deque", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08a89b46efaf957e52b18062fb2f4660f8b8a4dde1807ca002690868ef2c85a9" +dependencies = [ + "crossbeam-deque", + "crossbeam-queue", + "crossbeam-utils 0.7.0", + "lazy_static", + "num_cpus", +] + [[package]] name = "rdrand" version = "0.4.0" @@ -1555,7 +1784,39 @@ checksum = "4ca4eaef519b494d1f2848fc602d18816fed808a981aedf4f1f00ceb7c9d32cf" dependencies = [ "base64", "blake2b_simd", - "crossbeam-utils", + "crossbeam-utils 0.6.6", +] + +[[package]] +name = "rust-embed" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b18893bdbdb0fa5bce588f5d7ab4afbd0678fc879d31535912bf39b7fbc062d6" +dependencies = [ + "rust-embed-impl", + "rust-embed-utils", + "walkdir", +] + +[[package]] +name = "rust-embed-impl" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50633968284cfc373661345fc6382e62b738079f045738023ebc5e445cf44357" +dependencies = [ + "quote 1.0.2", + "rust-embed-utils", + "syn 1.0.13", + "walkdir", +] + +[[package]] +name = "rust-embed-utils" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97655158074ccb2d2cfb1ccb4c956ef0f4054e43a2c1e71146d4991e6961e105" +dependencies = [ + "walkdir", ] [[package]] @@ -1573,6 +1834,15 @@ dependencies = [ "byteorder", ] +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + [[package]] name = "rusttype" version = "0.7.9" @@ -1619,12 +1889,33 @@ dependencies = [ "winapi 0.3.8", ] +[[package]] +name = "scoped_threadpool" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" + [[package]] name = "scopeguard" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + [[package]] name = "serde" version = "1.0.104" @@ -1811,6 +2102,17 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" +[[package]] +name = "syn" +version = "0.15.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "unicode-xid 0.1.0", +] + [[package]] name = "syn" version = "1.0.13" @@ -1830,7 +2132,7 @@ checksum = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" dependencies = [ "proc-macro2 1.0.7", "quote 1.0.2", - "syn", + "syn 1.0.13", "unicode-xid 0.2.0", ] @@ -1873,6 +2175,18 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "tiff" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7b7c2cfc4742bd8a32f2e614339dd8ce30dbcf676bb262bd63a2327bc5df57d" +dependencies = [ + "byteorder", + "lzw", + "num-derive", + "num-traits", +] + [[package]] name = "toml" version = "0.5.5" @@ -2116,6 +2430,15 @@ dependencies = [ "x11-dl", ] +[[package]] +name = "winres" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff4fb510bbfe5b8992ff15f77a2e6fe6cf062878f0eda00c0f44963a807ca5dc" +dependencies = [ + "toml", +] + [[package]] name = "ws2_32-sys" version = "0.2.1" diff --git a/Cargo.toml b/Cargo.toml index 592c93d..beffb60 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,7 @@ name = "neovide" version = "0.1.0" authors = ["keith "] edition = "2018" +build = "build.rs" [dependencies] euclid = "0.20.7" @@ -15,6 +16,11 @@ env_logger = "0.7.1" neovim-lib = { git = "https://github.com/daa84/neovim-lib", version = "0.6" } rmpv = "0.4.2" msgbox = "0.4.0" +rust-embed= { version = "5.2.0", features = ["debug-embed"] } +image = "0.22.3" + +[build-dependencies] +winres = "0.1.11" [profile.release] debug = true diff --git a/assets/nvim.ico b/assets/nvim.ico new file mode 100644 index 0000000000000000000000000000000000000000..9644da6735d5fef21285f86e0285d8aa4560ab90 GIT binary patch literal 85182 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, nvim: Neovim, initial_size: (u64, u64 (height as f32 * renderer.font_height + 1.0) as f64 ); + let icon = { + dbg!(Asset::iter().map(|file| file.to_string()).collect::>()); + let icon_data = Asset::get("nvim.ico").expect("Failed to read icon data"); + let icon = load_from_memory(&icon_data).expect("Failed to parse icon data"); + let (width, height) = icon.dimensions(); + let mut rgba = Vec::with_capacity((width * height) as usize * 4); + for (_, _, pixel) in icon.pixels() { + rgba.extend_from_slice(&pixel.to_rgba().0); + } + Icon::from_rgba(rgba, width, height).expect("Failed to create icon object") + }; + let window = Arc::new(WindowBuilder::new() .with_title("Neovide") .with_inner_size(logical_size) + .with_window_icon(Some(icon)) .build(&event_loop) .expect("Failed to create window"));