diff --git a/Cargo.lock b/Cargo.lock index 9b7c309..a8fc97b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -198,7 +198,7 @@ version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -209,7 +209,7 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -407,6 +407,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + [[package]] name = "base64" version = "0.22.1" @@ -1146,7 +1152,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-time", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -1817,6 +1823,12 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ec7c5eb7a16992b1904d76c517d170ab353b0e0b3d5a0c81a8a0cd1037893cf" +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + [[package]] name = "colorchoice" version = "1.0.5" @@ -2185,7 +2197,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -2320,7 +2332,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -2483,6 +2495,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" +[[package]] +name = "font-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39a654f404bbcbd48ea58c617c2993ee91d1cb63727a37bf2323a4edeed1b8c5" +dependencies = [ + "bytemuck", +] + [[package]] name = "font-types" version = "0.11.3" @@ -2506,7 +2527,7 @@ dependencies = [ "objc2-core-text", "objc2-foundation 0.3.2", "parlance", - "read-fonts", + "read-fonts 0.39.2", "roxmltree", "smallvec", "windows", @@ -2672,6 +2693,16 @@ dependencies = [ "wasip3", ] +[[package]] +name = "gif" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159" +dependencies = [ + "color_quant", + "weezl", +] + [[package]] name = "gl_generator" version = "0.14.0" @@ -2714,10 +2745,13 @@ version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3ce1918195723ce6ac74e80542c5a96a40c2b26162c1957a5cd70799b8cacf7" dependencies = [ + "base64 0.13.1", "byteorder", "gltf-json", + "image", "lazy_static", "serde_json", + "urlencoding", ] [[package]] @@ -2828,7 +2862,7 @@ checksum = "d12c7c642d4ce8c2e784b4751a6634bd89583912265add4a679a8882d123fbcd" dependencies = [ "bitflags 2.13.0", "bytemuck", - "read-fonts", + "read-fonts 0.39.2", "smallvec", ] @@ -3067,10 +3101,25 @@ checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" dependencies = [ "bytemuck", "byteorder-lite", + "color_quant", + "gif", + "image-webp", "moxcms", "num-traits", "png", "tiff", + "zune-core", + "zune-jpeg", +] + +[[package]] +name = "image-webp" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3" +dependencies = [ + "byteorder-lite", + "quick-error", ] [[package]] @@ -3636,7 +3685,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -4056,7 +4105,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -4142,7 +4191,7 @@ dependencies = [ "linebender_resource_handle", "parlance", "parley_data", - "skrifa", + "skrifa 0.42.1", ] [[package]] @@ -4712,10 +4761,13 @@ dependencies = [ "bevy", "clap", "etcetera", + "gltf", "image", + "libc", "parley_ratatui", "portable-pty", "ratatui", + "rio-graphics", "rio-vt", "rust-embed", "serde", @@ -4745,6 +4797,16 @@ dependencies = [ "objc2-quartz-core 0.3.2", ] +[[package]] +name = "read-fonts" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717cf23b488adf64b9d711329542ba34de147df262370221940dfabc2c91358" +dependencies = [ + "bytemuck", + "font-types 0.10.1", +] + [[package]] name = "read-fonts" version = "0.39.2" @@ -4752,7 +4814,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4ed38b89c2c77ff968c524145ad65fb010f38af5c7a224b53b81d47ac2daa81" dependencies = [ "bytemuck", - "font-types", + "font-types 0.11.3", ] [[package]] @@ -4836,9 +4898,8 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" [[package]] name = "rio-grapheme-width" -version = "0.5.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8748a230342b653830718978aa78fc7e4887bcf2d1292228ea1e033dd0207151" +version = "0.5.20" +source = "git+https://github.com/gold-silver-copper/rio?rev=535495772f8548e2cbf9a840938c8eca21714888#535495772f8548e2cbf9a840938c8eca21714888" dependencies = [ "phf 0.13.1", "ucd-trie", @@ -4846,24 +4907,32 @@ dependencies = [ [[package]] name = "rio-graphics" -version = "0.5.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "150067cf37f1468cffffae9cbfd40e106adc5f8451239b5b0a7fa660b6a5a91c" +version = "0.5.20" +source = "git+https://github.com/gold-silver-copper/rio?rev=535495772f8548e2cbf9a840938c8eca21714888#535495772f8548e2cbf9a840938c8eca21714888" dependencies = [ + "image", + "parking_lot", "rustc-hash 2.1.3", + "skrifa 0.37.0", "tracing", + "web-time", ] +[[package]] +name = "rio-unicode" +version = "0.1.0" +source = "git+https://github.com/gold-silver-copper/rio?rev=535495772f8548e2cbf9a840938c8eca21714888#535495772f8548e2cbf9a840938c8eca21714888" + [[package]] name = "rio-vt" -version = "0.5.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82bb771ed37480c3bec80684513a5d136a7cd5a32a86c0bf13a6d7cb0239b600" +version = "0.5.20" +source = "git+https://github.com/gold-silver-copper/rio?rev=535495772f8548e2cbf9a840938c8eca21714888#535495772f8548e2cbf9a840938c8eca21714888" dependencies = [ "base64 0.23.0", "bitflags 2.13.0", "cursor-icon", "flate2", + "image", "libc", "memchr", "parking_lot", @@ -4871,12 +4940,13 @@ dependencies = [ "regex-automata", "rio-grapheme-width", "rio-graphics", + "rio-unicode", "rustc-hash 2.1.3", "serde", "simdutf", "smallvec", "tracing", - "unicode-width-16", + "web-time", "windows-sys 0.61.2", ] @@ -4981,7 +5051,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.12.1", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -5274,6 +5344,16 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +[[package]] +name = "skrifa" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c31071dedf532758ecf3fed987cdb4bd9509f900e026ab684b4ecb81ea49841" +dependencies = [ + "bytemuck", + "read-fonts 0.35.0", +] + [[package]] name = "skrifa" version = "0.42.1" @@ -5281,7 +5361,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c34617370ae968efb7161bb2beb517d9084659aae19e24b89e3db25b46e4564" dependencies = [ "bytemuck", - "read-fonts", + "read-fonts 0.39.2", ] [[package]] @@ -5429,7 +5509,7 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0811b01ca2c4e8718760713911feaf4675c24f94e50530a015ec646cfb622f7c" dependencies = [ - "skrifa", + "skrifa 0.42.1", "yazi", "zeno", ] @@ -5497,7 +5577,7 @@ dependencies = [ "parking_lot", "rustix 1.1.4", "signal-hook", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -5968,18 +6048,18 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" -[[package]] -name = "unicode-width-16" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eba15036aa0f5bf8ed6cd12a624ddb61fd50b0779b1c05d89b663bcaed7b5c2" - [[package]] name = "unicode-xid" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + [[package]] name = "utf8_iter" version = "1.0.4" @@ -6033,7 +6113,7 @@ dependencies = [ "log", "peniko", "png", - "skrifa", + "skrifa 0.42.1", "static_assertions", "thiserror 2.0.18", "vello_encoding", @@ -6050,7 +6130,7 @@ dependencies = [ "bytemuck", "guillotiere 0.7.0", "peniko", - "skrifa", + "skrifa 0.42.1", "smallvec", ] @@ -6621,7 +6701,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 019d8d2..cdf3195 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,11 +41,14 @@ bevy = { version = "0.19.0", default-features = false, features = [ ] } clap = { version = "4.5", features = ["derive"] } etcetera = "0.11" +gltf = "1.4" image = { version = "0.25", default-features = false, features = ["png", "ico"] } +libc = "0.2" parley_ratatui = "0.3.4" portable-pty = "0.8" ratatui = "0.30" -rio-vt = { version = "0.5.19", default-features = false } +rio-graphics = { git = "https://github.com/gold-silver-copper/rio", rev = "535495772f8548e2cbf9a840938c8eca21714888" } +rio-vt = { git = "https://github.com/gold-silver-copper/rio", rev = "535495772f8548e2cbf9a840938c8eca21714888", default-features = false, features = ["graphics"] } rust-embed = "8.5" serde = { version = "1.0", features = ["derive"] } shellexpand = "3.1" diff --git a/README.md b/README.md index 60c0e61..345583a 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ Inspired by TempleOS | Built with Rust & Ratatui - Spinning rat cursor ([customizable](#changing-the-cursor)) - Traditional 2D and [new 3D mode](#3d-mode)! - [Inline 3D objects](#inline-3d-objects) +- [Inline 2D bitmap surfaces](#inline-2d-bitmap-surfaces) - [GPU-backed text rendering](#rendering-pipeline) - Image support (via Kitty Graphics Protocol >:\() @@ -233,6 +234,96 @@ A blazingly fast serial monitor with plotter TUI and 3D telemetry