cargo: Update to glycin 4.0.0-alpha

This commit is contained in:
Sophie Herold 2026-06-25 16:52:58 +02:00
parent 95e473207f
commit 05edeb1418
7 changed files with 540 additions and 174 deletions

586
Cargo.lock generated
View file

@ -17,6 +17,12 @@ dependencies = [
"memchr",
]
[[package]]
name = "aliasable"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd"
[[package]]
name = "anyhow"
version = "1.0.102"
@ -218,6 +224,12 @@ version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]]
name = "bit_field"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6"
[[package]]
name = "bitflags"
version = "2.11.0"
@ -255,6 +267,12 @@ version = "1.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"
[[package]]
name = "byteorder-lite"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
[[package]]
name = "cairo-rs"
version = "0.22.0"
@ -321,6 +339,12 @@ dependencies = [
"num-traits",
]
[[package]]
name = "color_quant"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
[[package]]
name = "concurrent-queue"
version = "2.5.0"
@ -484,12 +508,47 @@ dependencies = [
"pin-project-lite",
]
[[package]]
name = "exr"
version = "1.74.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be"
dependencies = [
"bit_field",
"half",
"lebe",
"miniz_oxide 0.8.9",
"smallvec",
"zune-inflate",
]
[[package]]
name = "fastrand"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
[[package]]
name = "fax"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a"
[[package]]
name = "fdeflate"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c"
dependencies = [
"simd-adler32",
]
[[package]]
name = "fearless_simd"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b97b65636e5b9ef369943878ac74335ba1c55c1cb6adbf1e2c293c624248d693"
[[package]]
name = "field-offset"
version = "0.3.6"
@ -556,6 +615,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
dependencies = [
"futures-core",
"futures-sink",
]
[[package]]
@ -605,6 +665,12 @@ dependencies = [
"syn",
]
[[package]]
name = "futures-sink"
version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"
[[package]]
name = "futures-task"
version = "0.3.32"
@ -626,6 +692,7 @@ dependencies = [
"futures-core",
"futures-io",
"futures-macro",
"futures-sink",
"futures-task",
"memchr",
"pin-project-lite",
@ -784,6 +851,16 @@ dependencies = [
"temp-dir",
]
[[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 = "gio"
version = "0.22.2"
@ -814,6 +891,31 @@ dependencies = [
"windows-sys",
]
[[package]]
name = "gio-unix"
version = "0.22.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9241b3df1288f8b59027e9499a999c54ec6993111e21644e72d4527fdafdb7c"
dependencies = [
"gio",
"gio-unix-sys",
"glib",
"libc",
]
[[package]]
name = "gio-unix-sys"
version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44bab97ce39112040216e268f074645f50b31caeb53af708ab5d7e4e67f0dbfd"
dependencies = [
"gio-sys",
"glib-sys",
"gobject-sys",
"libc",
"system-deps",
]
[[package]]
name = "glib"
version = "0.22.0"
@ -841,7 +943,7 @@ version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b48a968528354e04603ae96205f00cf7e77347ffde0fc943a2159948d7d6d80"
dependencies = [
"heck",
"heck 0.5.0",
"proc-macro2",
"quote",
"syn",
@ -859,46 +961,28 @@ dependencies = [
[[package]]
name = "glycin"
version = "3.1.0"
version = "4.0.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "923674c1f2b1a28f69ebdc0f572672e63874e17ce0e60c96b8bfaff47a8ef4e9"
checksum = "ab0d95230ccbc60d168eca33984e3ee2c75d75bb844eb11eb97907eaffc92886"
dependencies = [
"async-fs",
"async-global-executor",
"async-io",
"async-lock",
"async-task",
"blocking",
"futures-channel",
"futures-lite",
"futures-timer",
"futures-util",
"gdk4",
"gio",
"glib",
"glycin-common",
"glycin-utils",
"gufo-common",
"gufo-exif",
"lcms2",
"lcms2-sys",
"libc",
"libseccomp",
"memfd",
"memmap2",
"nix",
"static_assertions",
"thiserror",
"tracing",
"yeslogic-fontconfig-sys",
"zbus",
"glycin-builtin",
"glycin-external",
]
[[package]]
name = "glycin-builtin"
version = "4.0.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c5a3cd8219bdee0cd16a26c3728c075604a2a293b211c4e95d0eb2eb55fbe7e"
dependencies = [
"glycin-core",
]
[[package]]
name = "glycin-common"
version = "1.0.4"
version = "2.0.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db28cec888051ccbf68f9f352d57ba2a292179863524a0769e54dbb72d152a03"
checksum = "daf97898ba7a2356b941983ab1ef5634f2e1567eb290fe801bde60da185e2085"
dependencies = [
"bitflags",
"gufo-common",
@ -914,19 +998,88 @@ dependencies = [
]
[[package]]
name = "glycin-utils"
version = "4.1.0"
name = "glycin-core"
version = "4.0.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b49cd2451bced7416341a5e89d74f547e92b85b67e8f66c8723a7505930a50ab"
checksum = "c624b4182686e793e8dd897108b972d66814d925e66a5acefde25d8faaab1b77"
dependencies = [
"async-fs",
"async-global-executor",
"async-io",
"async-lock",
"async-task",
"blocking",
"futures-channel",
"futures-lite",
"futures-timer",
"futures-util",
"gdk4",
"gio",
"gio-unix",
"glib",
"glycin-common",
"glycin-image-rs",
"glycin-utils",
"gufo-common",
"gufo-exif",
"lcms2",
"lcms2-sys",
"libc",
"libseccomp",
"nix",
"static_assertions",
"thiserror",
"tracing",
"yeslogic-fontconfig-sys",
"zbus",
]
[[package]]
name = "glycin-external"
version = "4.0.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60368043c6a9d7ffc234d93a410ffc8af46b5e8bf1c3a0fffeb62d9440b2e587"
dependencies = [
"glycin-core",
]
[[package]]
name = "glycin-image-rs"
version = "2.2.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c9ea3f09d2ae3a76aa548982abfbef05156007d822a3020ae9d9172b5ccc1793"
dependencies = [
"glycin-utils",
"gufo",
"gufo-common",
"gufo-exif",
"gufo-jpeg",
"hayro-jpeg2000",
"image",
"image-extras",
"jpeg-encoder",
"log",
"zune-jpeg",
]
[[package]]
name = "glycin-utils"
version = "5.0.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c0c35adeb97c0e2324cc6c1a65b65bf8abf3ecea5bfc238d476bdee67a7ea4d"
dependencies = [
"async-lock",
"bitflags",
"blocking",
"env_logger",
"futures-lite",
"futures-timer",
"futures-util",
"glib",
"glycin-common",
"gufo-common",
"half",
"image",
"libc",
"libseccomp",
"log",
@ -1060,15 +1213,16 @@ dependencies = [
[[package]]
name = "gufo"
version = "0.4.0"
version = "0.5.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79cc07454317e1e3baa8c731397f404b183850457a2006fbc9d076a5bb994df7"
checksum = "d97d857a79df06e10cd669541ed0a42d471a45a5201ce99535baf99b18c4129a"
dependencies = [
"chrono",
"gufo-common",
"gufo-exif",
"gufo-jpeg",
"gufo-png",
"gufo-svg",
"gufo-tiff",
"gufo-webp",
"gufo-xmp",
@ -1078,9 +1232,9 @@ dependencies = [
[[package]]
name = "gufo-common"
version = "1.1.0"
version = "2.0.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f23bc0d0e791259ce4fe703c4d988c64317e33477bc4d1d7526ab8eb9fcaab6"
checksum = "970e26402b2750cf3fbbf49116dca9fc010c939013125623c94da632f1ba76e8"
dependencies = [
"chrono",
"paste",
@ -1091,47 +1245,63 @@ dependencies = [
[[package]]
name = "gufo-exif"
version = "0.4.0"
version = "0.5.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad61fccc591119491879e7bee63ebbfbd27811b35367b4728a857119fde78843"
checksum = "e6a31aca18913da24cf6aaf0d3ffd905608463ffb75d0af42c2f0bf3afc7b987"
dependencies = [
"chrono",
"gufo-common",
"indexmap",
"ouroboros",
"thiserror",
"tracing",
"zerocopy",
]
[[package]]
name = "gufo-jpeg"
version = "0.4.0"
version = "0.5.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5606b919ea2538d6e761781be87eaf5186427c3d64849c1013359aa3681e68d2"
checksum = "004fec8f321842386ba7decc6ee03dde7ed35f29c3586861a5c708cca1e4259b"
dependencies = [
"gufo-common",
"indexmap",
"jpeg-encoder",
"thiserror",
"tracing",
]
[[package]]
name = "gufo-png"
version = "0.4.0"
version = "0.5.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48293353510101aa3791932172f864c9acdf2125d730f50910cac965ea2e66d5"
checksum = "810e7750b869abb84c6162ad01a240f388a924d2d469ae30a0c2c11a28e81813"
dependencies = [
"crc32fast",
"encoding_rs",
"gufo-common",
"hex",
"miniz_oxide 0.9.0",
"miniz_oxide 0.9.1",
"thiserror",
]
[[package]]
name = "gufo-tiff"
version = "0.4.0"
name = "gufo-svg"
version = "0.5.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51743619d12e8ead9fdd3cdd2ad3d0ed994a538542857f5115d74d6547a0083b"
checksum = "c4d74e7f2578608f76c0eff9c517dabf6a7fa8769b1af36ad994d70ec01d5deb"
dependencies = [
"gufo-common",
"memchr",
"thiserror",
"xml",
]
[[package]]
name = "gufo-tiff"
version = "0.5.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0a937aa0a245c9602aa9ed4857b6fc8f184cc43cf91e18d982c74c698e20afd5"
dependencies = [
"gufo-common",
"thiserror",
@ -1139,9 +1309,9 @@ dependencies = [
[[package]]
name = "gufo-webp"
version = "0.4.0"
version = "0.5.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "218ea90042f1766b38b487dfbb261b6f21636e5cfd570e1ac6709119dae92fe2"
checksum = "662c18ba5eef44d65c1694ebede033783ab5b48eb81366c1625deaaf75c47a18"
dependencies = [
"gufo-common",
"thiserror",
@ -1149,14 +1319,14 @@ dependencies = [
[[package]]
name = "gufo-xmp"
version = "0.4.0"
version = "0.5.0-alpha"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "020d604dbaf16f257f9d8bf7c1109551089be459ad8dc54c4205d28fe1688399"
checksum = "ea3cc4abbf29cddc6ffc1a4473eec79f11cf742bc113f9bd319ca1d7fcedfc39"
dependencies = [
"chrono",
"gufo-common",
"thiserror",
"xml-rs",
"xml",
]
[[package]]
@ -1225,6 +1395,23 @@ version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
[[package]]
name = "hayro-jpeg2000"
version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c75ab947623ef4ccaa7acf0579edf7cbb5a73838e3839a7be73335e522f433a1"
dependencies = [
"fearless_simd",
"image",
"moxcms",
]
[[package]]
name = "heck"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
[[package]]
name = "heck"
version = "0.5.0"
@ -1249,6 +1436,46 @@ version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
[[package]]
name = "image"
version = "0.25.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104"
dependencies = [
"bytemuck",
"byteorder-lite",
"color_quant",
"exr",
"gif",
"image-webp",
"moxcms",
"num-traits",
"png",
"qoi",
"tiff",
"zune-core",
"zune-jpeg",
]
[[package]]
name = "image-extras"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60d02eb2c9ccbbab470538fce34c7bc3be7b4e59268e65a3171367b296cdb842"
dependencies = [
"image",
]
[[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]]
name = "indexmap"
version = "2.13.0"
@ -1301,6 +1528,12 @@ dependencies = [
"libc",
]
[[package]]
name = "jpeg-encoder"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b0b36cbb4e6704f12f5b5d7b01dac593982c6550859ebd5a66fb15c9ea27fd5"
[[package]]
name = "js-sys"
version = "0.3.90"
@ -1346,6 +1579,12 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
[[package]]
name = "lebe"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8"
[[package]]
name = "libadwaita"
version = "0.9.1"
@ -1379,9 +1618,9 @@ dependencies = [
[[package]]
name = "libc"
version = "0.2.183"
version = "0.2.186"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d"
checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
[[package]]
name = "libgweather"
@ -1507,18 +1746,9 @@ dependencies = [
[[package]]
name = "memchr"
version = "2.8.0"
version = "2.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
[[package]]
name = "memfd"
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad38eb12aea514a0466ea40a80fd8cc83637065948eb4a426e4aa46261175227"
dependencies = [
"rustix",
]
checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
[[package]]
name = "memmap2"
@ -1550,18 +1780,28 @@ dependencies = [
[[package]]
name = "miniz_oxide"
version = "0.9.0"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5faa9f23e86bd5768d76def086192ff5f869fb088da12a976ea21e9796b975f6"
checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c"
dependencies = [
"adler2",
]
[[package]]
name = "nix"
version = "0.30.1"
name = "moxcms"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b"
dependencies = [
"num-traits",
"pxfm",
]
[[package]]
name = "nix"
version = "0.31.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d"
dependencies = [
"bitflags",
"cfg-if",
@ -1632,6 +1872,30 @@ dependencies = [
"pin-project-lite",
]
[[package]]
name = "ouroboros"
version = "0.18.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e0f050db9c44b97a94723127e6be766ac5c340c48f2c4bb3ffa11713744be59"
dependencies = [
"aliasable",
"ouroboros_macro",
"static_assertions",
]
[[package]]
name = "ouroboros_macro"
version = "0.18.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c7028bdd3d43083f6d8d4d5187680d0d3560d54df4cc9d752005268b41e64d0"
dependencies = [
"heck 0.4.1",
"proc-macro2",
"proc-macro2-diagnostics",
"quote",
"syn",
]
[[package]]
name = "pango"
version = "0.22.0"
@ -1691,6 +1955,19 @@ version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
[[package]]
name = "png"
version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61"
dependencies = [
"bitflags",
"crc32fast",
"fdeflate",
"flate2",
"miniz_oxide 0.8.9",
]
[[package]]
name = "polling"
version = "3.11.0"
@ -1748,6 +2025,40 @@ dependencies = [
"unicode-ident",
]
[[package]]
name = "proc-macro2-diagnostics"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
dependencies = [
"proc-macro2",
"quote",
"syn",
"version_check",
"yansi",
]
[[package]]
name = "pxfm"
version = "0.1.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f"
[[package]]
name = "qoi"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001"
dependencies = [
"bytemuck",
]
[[package]]
name = "quick-error"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
[[package]]
name = "quick-xml"
version = "0.38.4"
@ -2011,7 +2322,7 @@ version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664"
dependencies = [
"heck",
"heck 0.5.0",
"proc-macro2",
"quote",
"syn",
@ -2035,7 +2346,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48c8f33736f986f16d69b6cb8b03f55ddcad5c41acc4ccc39dd88e84aa805e7f"
dependencies = [
"cfg-expr",
"heck",
"heck 0.5.0",
"pkg-config",
"toml",
"version-compare",
@ -2095,6 +2406,20 @@ dependencies = [
"cfg-if",
]
[[package]]
name = "tiff"
version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52"
dependencies = [
"fax",
"flate2",
"half",
"quick-error",
"weezl",
"zune-jpeg",
]
[[package]]
name = "toml"
version = "0.9.12+spec-1.1.0"
@ -2107,7 +2432,7 @@ dependencies = [
"toml_datetime",
"toml_parser",
"toml_writer",
"winnow",
"winnow 0.7.14",
]
[[package]]
@ -2128,7 +2453,7 @@ dependencies = [
"indexmap",
"toml_datetime",
"toml_parser",
"winnow",
"winnow 0.7.14",
]
[[package]]
@ -2137,7 +2462,7 @@ version = "1.0.9+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4"
dependencies = [
"winnow",
"winnow 0.7.14",
]
[[package]]
@ -2235,6 +2560,12 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e"
[[package]]
name = "version_check"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "walkdir"
version = "2.5.0"
@ -2342,6 +2673,12 @@ dependencies = [
"semver",
]
[[package]]
name = "weezl"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88"
[[package]]
name = "winapi"
version = "0.3.9"
@ -2397,6 +2734,15 @@ dependencies = [
"memchr",
]
[[package]]
name = "winnow"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1"
dependencies = [
"memchr",
]
[[package]]
name = "wit-bindgen"
version = "0.51.0"
@ -2413,7 +2759,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
dependencies = [
"anyhow",
"heck",
"heck 0.5.0",
"wit-parser",
]
@ -2424,7 +2770,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
dependencies = [
"anyhow",
"heck",
"heck 0.5.0",
"indexmap",
"prettyplease",
"syn",
@ -2497,10 +2843,16 @@ dependencies = [
]
[[package]]
name = "xml-rs"
version = "0.8.28"
name = "xml"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f"
checksum = "636f85e5ca6488e96401b61eb7de54f4e44755c988af0f52cf90230c312a1a89"
[[package]]
name = "yansi"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
[[package]]
name = "yeslogic-fontconfig-sys"
@ -2515,9 +2867,9 @@ dependencies = [
[[package]]
name = "zbus"
version = "5.14.0"
version = "5.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca82f95dbd3943a40a53cfded6c2d0a2ca26192011846a1810c4256ef92c60bc"
checksum = "eee682d202a77e4a9f3b2c2bdf48a7b28af5c08c34ddf66f98c93e5e39464285"
dependencies = [
"async-broadcast",
"async-executor",
@ -2542,7 +2894,7 @@ dependencies = [
"uds_windows",
"uuid",
"windows-sys",
"winnow",
"winnow 1.0.3",
"zbus_macros",
"zbus_names",
"zvariant",
@ -2550,9 +2902,9 @@ dependencies = [
[[package]]
name = "zbus_macros"
version = "5.14.0"
version = "5.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "897e79616e84aac4b2c46e9132a4f63b93105d54fe8c0e8f6bffc21fa8d49222"
checksum = "adf1bd45a81a103745b1757754762a26e8cd01e4532e4d6c8ec431624b80d1d6"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@ -2565,29 +2917,29 @@ dependencies = [
[[package]]
name = "zbus_names"
version = "4.3.1"
version = "4.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f"
checksum = "7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d"
dependencies = [
"serde",
"winnow",
"winnow 1.0.3",
"zvariant",
]
[[package]]
name = "zerocopy"
version = "0.8.40"
version = "0.8.52"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5"
checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.8.40"
version = "0.8.52"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953"
checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930"
dependencies = [
"proc-macro2",
"quote",
@ -2601,24 +2953,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
[[package]]
name = "zvariant"
version = "5.10.0"
name = "zune-core"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5708299b21903bbe348e94729f22c49c55d04720a004aa350f1f9c122fd2540b"
checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9"
[[package]]
name = "zune-inflate"
version = "0.2.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02"
dependencies = [
"simd-adler32",
]
[[package]]
name = "zune-jpeg"
version = "0.5.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296"
dependencies = [
"zune-core",
]
[[package]]
name = "zvariant"
version = "5.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a192a0bde63360d77a7523c833d4b4ce6070a927e2c53246e4c540b1a3e27be0"
dependencies = [
"endi",
"enumflags2",
"serde",
"winnow",
"winnow 1.0.3",
"zvariant_derive",
"zvariant_utils",
]
[[package]]
name = "zvariant_derive"
version = "5.10.0"
version = "5.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b59b012ebe9c46656f9cc08d8da8b4c726510aef12559da3e5f1bf72780752c"
checksum = "90bc6cde9c01c511074be97f7ccb6c19d0da89e3f8662e812e999dcfd4638737"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@ -2629,13 +3005,13 @@ dependencies = [
[[package]]
name = "zvariant_utils"
version = "3.3.0"
version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9"
checksum = "1e8535915cfa75547e559d8c68e8139909a4aeee076831e4ef7fc59d8172c4d6"
dependencies = [
"proc-macro2",
"quote",
"serde",
"syn",
"winnow",
"winnow 1.0.3",
]

View file

@ -2,7 +2,7 @@
name = "loupe"
version = "50.0.0"
edition = "2024"
rust-version = "1.92"
rust-version = "1.93"
license = "GPL-3.0-or-later"
[profile.release]
@ -28,14 +28,14 @@ chrono = { version = "0.4.38", default-features = false, features = ["std"] }
gettext-rs = { version = "0.7.0", features = ["gettext-system"] }
gettext-sys = { version = "0.26.0", features = ["gettext-system"] }
gio = { version = "0.22.0", features = ["v2_74"] }
glycin = { version = "3.1.0", features = ["gdk4", "unstable-config"] }
glycin = { version = "4.0.0-alpha", features = ["gdk4"] }
gtk = { package = "gtk4", version = "0.11.0", features = [
"v4_14",
"xml_validation",
] }
gufo = { version = "0.4.0", features = ["chrono", "all-image-formats"] }
gufo-exif = "0.4.0"
gufo-common = { version = "1.1.0", features = ["serde"] }
gufo = { version = "0.5.0-alpha", features = ["chrono"] }
gufo-exif = "0.5.0-alpha"
gufo-common = { version = "2.0.0-alpha", features = ["serde"] }
gvdb-macros = "0.1.6"
indexmap = "2.0.0"
libc = "0.2.158"

View file

@ -65,15 +65,15 @@ pub enum DecoderUpdate {
#[derive(Debug, Clone)]
pub enum DecoderError {
/// Image format not supported or unknown
UnsupportedFormat(String, glycin::ErrorCtx),
UnsupportedFormat(String, glycin::Error),
/// No glycin-loaders installed
NoLoadersConfigured(glycin::ErrorCtx),
NoLoadersConfigured(glycin::Error),
/// Memory limit exceeded
OutOfMemory(glycin::ErrorCtx),
OutOfMemory(glycin::Error),
/// Failed to load image
ImageSource(glib::Error, glycin::ErrorCtx),
ImageSource(glib::Error, glycin::Error),
Generic(glycin::ErrorCtx),
Generic(glycin::Error),
}
impl UpdateSender {
@ -90,13 +90,13 @@ impl UpdateSender {
/// Send occurring errors to renderer
pub fn spawn_error_handled<F>(&self, f: F) -> glib::JoinHandle<()>
where
F: std::future::Future<Output = Result<(), glycin::ErrorCtx>> + Send + 'static,
F: std::future::Future<Output = Result<(), glycin::Error>> + Send + 'static,
{
let update_sender = self.clone();
glib::spawn_future(async move {
let update_sender = update_sender.clone();
let result: Result<(), glycin::ErrorCtx> = f.await;
let result: Result<(), glycin::Error> = f.await;
if let Err(err) = result {
update_sender.send_error(err);
@ -104,7 +104,7 @@ impl UpdateSender {
})
}
pub fn send_error(&self, err: glycin::ErrorCtx) {
pub fn send_error(&self, err: glycin::Error) {
if let Some(mime_type) = err.unsupported_format() {
let mut metadata = Metadata::default();
metadata.set_mime_type(mime_type.clone());
@ -115,14 +115,13 @@ impl UpdateSender {
))));
} else if err.is_out_of_memory() {
self.send(DecoderUpdate::Error(Some(DecoderError::OutOfMemory(err))));
} else if matches!(err.error(), glycin::Error::NoLoadersConfigured(_)) {
} else if err.has_no_processor_configured() {
self.send(DecoderUpdate::Error(Some(
DecoderError::NoLoadersConfigured(err),
)));
} else if let glycin::Error::ImageSource(glib_err) = err.error() {
} else if let Some(glib_err) = err.failed_image_source() {
self.send(DecoderUpdate::Error(Some(DecoderError::ImageSource(
glib_err.clone(),
err,
glib_err, err,
))));
} else {
self.send(DecoderUpdate::Error(Some(DecoderError::Generic(err))));

View file

@ -43,7 +43,11 @@ impl Drop for Glycin {
}
impl Glycin {
pub fn new(image: glycin::Image, updater: UpdateSender, tiles: Arc<SharedFrameBuffer>) -> Self {
pub fn new(
mut image: glycin::Image,
updater: UpdateSender,
tiles: Arc<SharedFrameBuffer>,
) -> Self {
let cancellable = image.cancellable();
let (next_frame_send, next_frame_recv) = async_channel::bounded(2);

View file

@ -61,7 +61,11 @@ impl Drop for Svg {
}
impl Svg {
pub fn new(image: glycin::Image, updater: UpdateSender, tiles: Arc<SharedFrameBuffer>) -> Self {
pub fn new(
mut image: glycin::Image,
updater: UpdateSender,
tiles: Arc<SharedFrameBuffer>,
) -> Self {
let current_request: Arc<std::sync::RwLock<Request>> = Default::default();
let request_store = current_request.clone();
let cancellable = image.cancellable();
@ -187,7 +191,7 @@ impl Svg {
#[allow(unused_mut)]
let loader = glycin::Loader::new(file.clone());
let image = loader.load().await?;
let mut image = loader.load().await?;
let frame_request = glycin::FrameRequest::new().scale(width as u32, height as u32);
let frame = image.specific_frame(frame_request).await?;

View file

@ -62,19 +62,11 @@ impl Metadata {
}
pub fn set_image_info(&mut self, image_info: ImageDetails) {
if let Some(exif_raw) = image_info
.metadata_exif()
.as_ref()
.and_then(|x| x.get_full().ok())
{
self.set_exif_bytes(exif_raw);
if let Some(exif_raw) = image_info.metadata_exif() {
self.set_exif_bytes(exif_raw.to_owned());
}
if let Some(exif_xmp) = image_info
.metadata_xmp()
.as_ref()
.and_then(|x| x.get_full().ok())
{
self.set_xmp_bytes(exif_xmp);
if let Some(exif_xmp) = image_info.metadata_xmp() {
self.set_xmp_bytes(exif_xmp.to_owned());
}
self.image_info = Some(image_info);
}
@ -261,8 +253,8 @@ impl Metadata {
}
pub fn exposure_time(&self) -> Option<String> {
if let Some((num, denom)) = self.metadata.exposure_time() {
let speed = num as f64 / denom as f64;
if let Some(exposure_time) = self.metadata.exposure_time() {
let speed = exposure_time.as_f64();
if speed <= 0.5 {
let exposure = format!("{:.0}", 1. / speed);
// Translators: Fractional exposure time (photography) in seconds
@ -288,7 +280,7 @@ impl Metadata {
pub fn focal_length(&self) -> Option<String> {
self.metadata
.focal_length()
.map(|focal_length| gettext_f(r"{}\u{202F}mm", [focal_length.to_string()]))
.map(|focal_length| gettext_f(r"{}\u{202F}mm", [focal_length.as_f32().to_string()]))
}
/// Combined maker and model info

View file

@ -364,7 +364,7 @@ mod imp {
Err(err) => Err(err),
};
match result {
Err(err) if matches!(err.error(), glycin::Error::Canceled(_)) => {
Err(err) if err.is_cancelled() => {
tracing::debug!("Computing edited image canceled");
}
Err(err) => {
@ -377,17 +377,10 @@ mod imp {
}
Ok(edit) => {
tracing::debug!("Saving edited image to '{}'", new_file.uri());
match edit.data().get() {
Err(err) => {
obj.window_show_error(
&gettext("Failed to Save Image"),
&format!("Failed to get binary data: {err}"),
ErrorType::General,
);
}
Ok(data) => {
self.set_saving_status(Some(gettext("Saving Image")));
// TODO: Clone might be avoidable
let data = edit.data().to_vec();
let save_result = gio::CancellableFuture::new(
new_file.replace_contents_future(
data,
@ -414,8 +407,6 @@ mod imp {
}
}
}
}
}
self.set_saving_status(None);
false