From bdfed242c4cb84fbfdc0f375eb5bc404850c2d67 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 16 Dec 2024 09:33:17 +0100 Subject: [PATCH 1/4] Try to fix broken images on egui.rs --- crates/egui_demo_app/Cargo.toml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/crates/egui_demo_app/Cargo.toml b/crates/egui_demo_app/Cargo.toml index 2a1661fcbde..c3083d11caf 100644 --- a/crates/egui_demo_app/Cargo.toml +++ b/crates/egui_demo_app/Cargo.toml @@ -28,8 +28,8 @@ default = ["glow", "persistence"] # image_viewer adds about 0.9 MB of WASM web_app = ["http", "persistence"] -http = ["ehttp", "image", "poll-promise", "egui_extras/image"] -image_viewer = ["image", "egui_extras/all_loaders", "rfd"] +http = ["ehttp", "image/jpeg", "poll-promise", "egui_extras/image"] +image_viewer = ["image/jpeg", "egui_extras/all_loaders", "rfd"] persistence = [ "eframe/persistence", "egui_extras/serde", @@ -56,6 +56,10 @@ eframe = { workspace = true, default-features = false, features = [ egui = { workspace = true, features = ["callstack", "default", "log"] } egui_demo_lib = { workspace = true, features = ["default", "chrono"] } egui_extras = { workspace = true, features = ["default", "image"] } +image = { workspace = true, default-features = false, features = [ + # Ensure we can display the test images + "png", +] } log.workspace = true profiling.workspace = true @@ -70,7 +74,6 @@ wgpu = { workspace = true, features = ["webgpu", "webgl"], optional = true } # feature "http": ehttp = { version = "0.5", optional = true } -image = { workspace = true, optional = true, features = ["jpeg", "png"] } poll-promise = { version = "0.3", optional = true, default-features = false } # feature "persistence": From 4293d54ce4aa05f2b136f7dd2e2a2906a6f74649 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 16 Dec 2024 12:29:47 +0100 Subject: [PATCH 2/4] Detect git-lfs files in image loader --- crates/egui_extras/src/loaders/image_loader.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/crates/egui_extras/src/loaders/image_loader.rs b/crates/egui_extras/src/loaders/image_loader.rs index 088ef5e4587..4c1a846e26b 100644 --- a/crates/egui_extras/src/loaders/image_loader.rs +++ b/crates/egui_extras/src/loaders/image_loader.rs @@ -78,6 +78,12 @@ impl ImageLoader for ImageCrateLoader { } } + if bytes.starts_with(b"version https://git-lfs") { + return Err(LoadError::FormatNotSupported { + detected_format: Some("git-lfs".to_owned()), + }); + } + // (3) log::trace!("started loading {uri:?}"); let result = crate::image::load_image_bytes(&bytes).map(Arc::new); From 248a30b79e542939ca479fd098dba116a4a2ec47 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 16 Dec 2024 12:40:07 +0100 Subject: [PATCH 3/4] Remove small .png files from git lfs --- .gitattributes | 5 ++++- crates/egui/assets/ferris.png | Bin 130 -> 46286 bytes crates/egui_demo_lib/data/icon.png | Bin 129 -> 2642 bytes 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index 09b004b60c0..b5348bf23b4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,5 +1,8 @@ * text=auto eol=lf Cargo.lock linguist-generated=false *.png filter=lfs diff=lfs merge=lfs -text -# The icon.png is needed when including eframe via git, so it may not be in lfs + +# Exclude some small files from LFS: crates/eframe/data/* !filter !diff !merge text=auto eol=lf +crates/egui_demo_lib/data/* !filter !diff !merge text=auto eol=lf +crates/egui/assets/* !filter !diff !merge text=auto eol=lf diff --git a/crates/egui/assets/ferris.png b/crates/egui/assets/ferris.png index 129c7f931c059afa966ebe1e5d910fc6dbab99cb..8741baa19d02a003db73c33bd779a324bc1a57fa 100644 GIT binary patch literal 46286 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 RENp6y4PQkzK4g3_k}7JS`?oK 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 MVrYS>(szsd4{n6D`v3p{ literal 129 zcmWN?K@!3s3;@78uiyig0D+eNCJjNDQRxWw;OliSd&zsW{?c{MbL__4+q^x>SpL_~ zv2cHyaSEHus@}35m0XBB_>>qC0U`)(xDh45>^-{-8Jx|bSVAtraV|#;X-%Ps4J!*! MifXj4Xcy6`AEKuw_5c6? From 6145b55f9992d8511381c365c00fbcd5d174e7b4 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 16 Dec 2024 13:24:15 +0100 Subject: [PATCH 4/4] Allow-list a few more png files on CI --- .github/workflows/png_only_on_lfs.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/png_only_on_lfs.yml b/.github/workflows/png_only_on_lfs.yml index e3d68ea3abf..624a7f4502d 100644 --- a/.github/workflows/png_only_on_lfs.yml +++ b/.github/workflows/png_only_on_lfs.yml @@ -13,11 +13,18 @@ jobs: - name: Check that png files are on git LFS run: | binary_extensions="png" - exclude="crates/eframe/data" + exclude_paths=( + "crates/eframe/data" + "crates/egui_demo_lib/data/" + "crates/egui/assets/" + ) # Find binary files that are not tracked by Git LFS for ext in $binary_extensions; do - if comm -23 <(git ls-files | grep -v "^$exclude" | sort) <(git lfs ls-files -n | sort) | grep "\.${ext}$"; then + # Create grep pattern to exclude multiple paths + exclude_pattern=$(printf "|^%s" "${exclude_paths[@]}" | sed 's/^|//') + + if comm -23 <(git ls-files | grep -Ev "$exclude_pattern" | sort) <(git lfs ls-files -n | sort) | grep "\.${ext}$"; then echo "Error: Found binary file with extension .$ext not tracked by git LFS. See CONTRIBUTING.md" exit 1 fi