mirror of
https://github.com/emilk/egui.git
synced 2026-08-30 13:20:05 -04:00
Improved texture loading (#3315)
* rework loading around `Arc<Loaders>` * use `Bytes` instead of splitting api * remove unwraps in `texture_handle` * make `FileLoader` optional under `file` feature * hide http load error stack trace from UI * implement image fit * support more image sources * center spinner if we know size ahead of time * allocate final size for spinner * improve image format guessing * remove `ui.image`, `Image`, add `RawImage` * deprecate `RetainedImage` * `image2` -> `image` * add viewer example * update `examples/image` + remove `svg` and `download_image` exapmles * fix lints and tests * fix doc link * add image controls to `images` example * add more `From` str-like types * add api to forget all images * fix max size * do not scale original size unless necessary * fix doc link * add more docs for `Image` and `RawImage` * make paint_at `pub` * update `ImageButton` to use new `Image` API * fix double rendering * `SizeHint::Original` -> `Scale` + remove `Option` wrapper * Update crates/egui/src/load.rs Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com> * remove special `None` value for `forget` * Update crates/egui/src/load.rs Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com> * add more examples to `ui.image` + add `include_image` macro * Update crates/egui/src/ui.rs Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com> * update `menu_image_button` to use `ImageSource` * `OrderedFloat::get` -> `into_inner` * derive `Eq` on `SizedTexture` * add `id` to loaders + `is_installed` check * move `images` to demo + simplify `images` example * log trace when installing loaders * fix lint * fix doc link * add more documentation * more `egui_extras::loaders` docs * Update examples/images/src/main.rs Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com> * update `images` example screenshots + readme * remove unused `rfd` from `images` example * Update crates/egui_extras/src/loaders/ehttp_loader.rs Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com> * add `must_use` on `Image` and `RawImage` * document `loaders::install` multiple call safety * Update crates/egui_extras/Cargo.toml Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com> * reshuffle `is_loader_installed` * make `include_image` produce `ImageSource` + update docs * update `include_image` docs * remove `None` mentions from loader `forget` * inline `From` texture id + size for `SizedTexture` * add warning about statically known path * change image load error + use in image button * add `.size()` to `Image` * Update crates/egui_demo_app/Cargo.toml Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com> * add explanations to image viewer ui --------- Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
This commit is contained in:
@@ -86,7 +86,10 @@ impl TextureHandle {
|
||||
|
||||
/// width x height
|
||||
pub fn size(&self) -> [usize; 2] {
|
||||
self.tex_mngr.read().meta(self.id).unwrap().size
|
||||
self.tex_mngr
|
||||
.read()
|
||||
.meta(self.id)
|
||||
.map_or([0, 0], |tex| tex.size)
|
||||
}
|
||||
|
||||
/// width x height
|
||||
@@ -97,7 +100,10 @@ impl TextureHandle {
|
||||
|
||||
/// `width x height x bytes_per_pixel`
|
||||
pub fn byte_size(&self) -> usize {
|
||||
self.tex_mngr.read().meta(self.id).unwrap().bytes_used()
|
||||
self.tex_mngr
|
||||
.read()
|
||||
.meta(self.id)
|
||||
.map_or(0, |tex| tex.bytes_used())
|
||||
}
|
||||
|
||||
/// width / height
|
||||
@@ -108,7 +114,10 @@ impl TextureHandle {
|
||||
|
||||
/// Debug-name.
|
||||
pub fn name(&self) -> String {
|
||||
self.tex_mngr.read().meta(self.id).unwrap().name.clone()
|
||||
self.tex_mngr
|
||||
.read()
|
||||
.meta(self.id)
|
||||
.map_or_else(|| "<none>".to_owned(), |tex| tex.name.clone())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,8 +8,16 @@ use std::hash::{Hash, Hasher};
|
||||
/// Possible types for `T` are `f32` and `f64`.
|
||||
///
|
||||
/// See also [`FloatOrd`].
|
||||
#[derive(Clone, Copy)]
|
||||
pub struct OrderedFloat<T>(T);
|
||||
|
||||
impl<T: Float + Copy> OrderedFloat<T> {
|
||||
#[inline]
|
||||
pub fn into_inner(self) -> T {
|
||||
self.0
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Float> Eq for OrderedFloat<T> {}
|
||||
|
||||
impl<T: Float> PartialEq<Self> for OrderedFloat<T> {
|
||||
|
||||
Reference in New Issue
Block a user