| author | |
| committer | |
| log | 4960c06d9ae353c4c2379730578d6105b3e8da4d |
| tree | ce3db5a56e66dc196c9b8b2e1e1bde4d3bb72828 |
| parent | b5d8955327de829054dd337a86eed6fc6582be62 |
| signature | Signed by SSH key SHA256:52mNGHRsVFBDED9IAX5pe+LRWUefqTbxEReunq21QvU |
"s: fire" and "m: winter" stopped the app at launch: their pictures are GIFs, which
OneNote keeps as inserted and the image decoder was built without.
Assisted-by: claude-opus-5.53 files changed, 33 insertions(+), 1 deletions(-)
Cargo.lock+24| ... | @@ -501,6 +501,12 @@ dependencies = [ | ... | @@ -501,6 +501,12 @@ dependencies = [ |
| 501 | "unicode-width", | 501 | "unicode-width", |
| 502 | ] | 502 | ] |
| 503 | 503 | ||
| 504 | [[package]] | ||
| 505 | name = "color_quant" | ||
| 506 | version = "1.1.0" | ||
| 507 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 508 | checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" | ||
| 509 | |||
| 504 | [[package]] | 510 | [[package]] |
| 505 | name = "combine" | 511 | name = "combine" |
| 506 | version = "4.6.8" | 512 | version = "4.6.8" |
| ... | @@ -912,6 +918,16 @@ dependencies = [ | ... | @@ -912,6 +918,16 @@ dependencies = [ |
| 912 | "polyval", | 918 | "polyval", |
| 913 | ] | 919 | ] |
| 914 | 920 | ||
| 921 | [[package]] | ||
| 922 | name = "gif" | ||
| 923 | version = "0.14.2" | ||
| 924 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 925 | checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159" | ||
| 926 | dependencies = [ | ||
| 927 | "color_quant", | ||
| 928 | "weezl", | ||
| 929 | ] | ||
| 930 | |||
| 915 | [[package]] | 931 | [[package]] |
| 916 | name = "gl_generator" | 932 | name = "gl_generator" |
| 917 | version = "0.14.0" | 933 | version = "0.14.0" |
| ... | @@ -1172,6 +1188,8 @@ checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" | ... | @@ -1172,6 +1188,8 @@ checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" |
| 1172 | dependencies = [ | 1188 | dependencies = [ |
| 1173 | "bytemuck", | 1189 | "bytemuck", |
| 1174 | "byteorder-lite", | 1190 | "byteorder-lite", |
| 1191 | "color_quant", | ||
| 1192 | "gif", | ||
| 1175 | "moxcms", | 1193 | "moxcms", |
| 1176 | "num-traits", | 1194 | "num-traits", |
| 1177 | "png", | 1195 | "png", |
| ... | @@ -3160,6 +3178,12 @@ dependencies = [ | ... | @@ -3160,6 +3178,12 @@ dependencies = [ |
| 3160 | "wasm-bindgen", | 3178 | "wasm-bindgen", |
| 3161 | ] | 3179 | ] |
| 3162 | 3180 | ||
| 3181 | [[package]] | ||
| 3182 | name = "weezl" | ||
| 3183 | version = "0.1.12" | ||
| 3184 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3185 | checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" | ||
| 3186 | |||
| 3163 | [[package]] | 3187 | [[package]] |
| 3164 | name = "wgpu" | 3188 | name = "wgpu" |
| 3165 | version = "30.0.1" | 3189 | version = "30.0.1" |
crates/canvas/Cargo.toml+1-1| ... | @@ -17,7 +17,7 @@ skrifa = "0.44.0" | ... | @@ -17,7 +17,7 @@ skrifa = "0.44.0" |
| 17 | bytemuck = { version = "1.25", features = ["derive"], optional = true } | 17 | bytemuck = { version = "1.25", features = ["derive"], optional = true } |
| 18 | swash = { version = "0.2.10", optional = true } | 18 | swash = { version = "0.2.10", optional = true } |
| 19 | wgpu = { workspace = true, optional = true } | 19 | wgpu = { workspace = true, optional = true } |
| 20 | image = { version = "0.25", default-features = false, features = ["png", "jpeg"], optional = true } | 20 | image = { version = "0.25", default-features = false, features = ["gif", "jpeg", "png"], optional = true } |
| 21 | roxmltree = { version = "0.21", optional = true } | 21 | roxmltree = { version = "0.21", optional = true } |
| 22 | 22 | ||
| 23 | [[bin]] | 23 | [[bin]] |
crates/canvas/src/gpu/mod.rs+8| ... | @@ -1051,6 +1051,14 @@ mod tests { | ... | @@ -1051,6 +1051,14 @@ mod tests { |
| 1051 | assert_eq!(decoded.size, [4, 4]); | 1051 | assert_eq!(decoded.size, [4, 4]); |
| 1052 | assert_eq!(decoded.pixels.as_ref(), [255; 4 * 4 * 4]); | 1052 | assert_eq!(decoded.pixels.as_ref(), [255; 4 * 4 * 4]); |
| 1053 | 1053 | ||
| 1054 | let mut gif = Vec::new(); | ||
| 1055 | image::codecs::gif::GifEncoder::new(&mut gif) | ||
| 1056 | .encode(&[255; 2 * 2 * 4], 2, 2, image::ExtendedColorType::Rgba8) | ||
| 1057 | .unwrap(); | ||
| 1058 | let decoded = RasterImage::decode(&gif).unwrap(); | ||
| 1059 | assert_eq!(decoded.size, [2, 2]); | ||
| 1060 | assert_eq!(decoded.pixels.as_ref(), [255; 2 * 2 * 4]); | ||
| 1061 | |||
| 1054 | for size in [[8192, 8192], [16_385, 1]] { | 1062 | for size in [[8192, 8192], [16_385, 1]] { |
| 1055 | let mut header = Vec::new(); | 1063 | let mut header = Vec::new(); |
| 1056 | let mut encoder = png::Encoder::new(&mut header, size[0], size[1]); | 1064 | let mut encoder = png::Encoder::new(&mut header, size[0], size[1]); |