mirror of
https://github.com/emilk/egui.git
synced 2026-08-30 13:20:05 -04:00
* add types from proposal * add load methods on `egui::Context` * implement loaders from proposal in `egui_extras` * impl `From<Vec2>` for `SizeHint` * re-export `SizeHint` from `egui` root * rework `svg` example to use new managed `Image` * split loaders into separate files + add logging * add `log_trace` * clean up `RetainedImage` from `svg` example * refactor ehttp loader response to bytes mapping * remove spammy trace * load images even without extension * fix lints * remove unused imports * use `Image2` in `download_image` * use `visuals.error_fg_color` in `Image2` error state * update lockfile * use `Arc<ColorImage>` in `ImageData` + add `forget` API * add `ui.image2` * add byte size query api * use iterators to sum loader byte sizes * add static image loading * use static image in `svg` example * small refactor of `Image2::ui` texture loading code * add `ImageFit` to size images properly * remove println calls * add bad image load to `download_image` example * add loader file extension support tests * fix lint errors in `loaders` * remove unused `poll-promise` dependency * add some docs to `Image2` * add some docs to `egui_extras::loaders::install` * explain `loaders::install` in examples * fix lint * upgrade `ehttp` to `0.3` for some crates * Remove some unused dependencies * Remove unnecessary context clone * Turn on the `log` create feature of egui_extras in all examples * rename `forget` and document it * derive `Debug` on `SizeHint` Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com> * round when converting SizeHint from vec2 Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com> * add `load` module docs * docstring `add_loader` methods * expose + document `load_include_bytes` * cache texture handles in `DefaultTextureLoader` * add `image2` doctest + further document `Image2` * use `Default` for default `Image2` options * update `image2` doc comment * mention immediate-mode safety * more fit calculation into inherent impl * add hover text on spinner * add `all-loaders` feature * clarify `egui_extras::loaders::install` behavior * explain how to enable image formats * properly format `uri` * use `thread::Builder` instead of `spawn` * use eq op instead of `matches` * inline `From<Arc<ColorImage>>` for `ImageData` * allow non-`'static` bytes + `forget` in `DefaultTextureLoader` * sort features * change `ehttp` feature to `http` * update `Image2` docs * refactor loader cache type --------- Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
59 lines
1.8 KiB
Rust
59 lines
1.8 KiB
Rust
// TODO: automatic cache eviction
|
|
|
|
/// Installs the default set of loaders:
|
|
/// - `file` loader on non-Wasm targets
|
|
/// - `http` loader (with the `ehttp` feature)
|
|
/// - `image` loader (with the `image` feature)
|
|
/// - `svg` loader with the `svg` feature
|
|
///
|
|
/// ⚠ This will do nothing and you won't see any images unless you enable some features!
|
|
/// If you just want to be able to load `file://` and `http://` images, enable the `all-loaders` feature.
|
|
///
|
|
/// ⚠ The supported set of image formats is configured by adding the [`image`](https://crates.io/crates/image)
|
|
/// crate as your direct dependency, and enabling features on it:
|
|
///
|
|
/// ```toml,ignore
|
|
/// image = { version = "0.24", features = ["jpeg", "png"] }
|
|
/// ```
|
|
///
|
|
/// See [`egui::load`] for more information about how loaders work.
|
|
pub fn install(ctx: &egui::Context) {
|
|
#[cfg(not(target_arch = "wasm32"))]
|
|
ctx.add_bytes_loader(std::sync::Arc::new(self::file_loader::FileLoader::default()));
|
|
|
|
#[cfg(feature = "http")]
|
|
ctx.add_bytes_loader(std::sync::Arc::new(
|
|
self::ehttp_loader::EhttpLoader::default(),
|
|
));
|
|
|
|
#[cfg(feature = "image")]
|
|
ctx.add_image_loader(std::sync::Arc::new(
|
|
self::image_loader::ImageCrateLoader::default(),
|
|
));
|
|
|
|
#[cfg(feature = "svg")]
|
|
ctx.add_image_loader(std::sync::Arc::new(self::svg_loader::SvgLoader::default()));
|
|
|
|
#[cfg(all(
|
|
target_arch = "wasm32",
|
|
not(feature = "http"),
|
|
not(feature = "image"),
|
|
not(feature = "svg")
|
|
))]
|
|
crate::log_warn!("`loaders::install` was called, but no loaders are enabled");
|
|
|
|
let _ = ctx;
|
|
}
|
|
|
|
#[cfg(not(target_arch = "wasm32"))]
|
|
mod file_loader;
|
|
|
|
#[cfg(feature = "http")]
|
|
mod ehttp_loader;
|
|
|
|
#[cfg(feature = "image")]
|
|
mod image_loader;
|
|
|
|
#[cfg(feature = "svg")]
|
|
mod svg_loader;
|