//! This is a crate that adds some features on top top of [`egui`](https://github.com/emilk/egui). //! //! This crate are for experimental features, and features that require big dependencies that does not belong in `egui`. //! //! ## Feature flags #![cfg_attr(feature = "document-features", doc = document_features::document_features!())] //! #![allow(clippy::float_cmp)] #![allow(clippy::manual_range_contains)] #![cfg_attr(feature = "puffin", deny(unsafe_code))] #![cfg_attr(not(feature = "puffin"), forbid(unsafe_code))] #[cfg(feature = "chrono")] mod datepicker; pub mod syntax_highlighting; #[doc(hidden)] pub mod image; mod layout; mod loaders; mod sizing; mod strip; mod table; #[cfg(feature = "chrono")] pub use crate::datepicker::DatePickerButton; #[doc(hidden)] #[allow(deprecated)] pub use crate::image::RetainedImage; pub(crate) use crate::layout::StripLayout; pub use crate::sizing::Size; pub use crate::strip::*; pub use crate::table::*; pub use loaders::install_image_loaders; // --------------------------------------------------------------------------- mod profiling_scopes { #![allow(unused_macros)] #![allow(unused_imports)] /// Profiling macro for feature "puffin" macro_rules! profile_function { ($($arg: tt)*) => { #[cfg(feature = "puffin")] #[cfg(not(target_arch = "wasm32"))] // Disabled on web because of the coarse 1ms clock resolution there. puffin::profile_function!($($arg)*); }; } pub(crate) use profile_function; /// Profiling macro for feature "puffin" macro_rules! profile_scope { ($($arg: tt)*) => { #[cfg(feature = "puffin")] #[cfg(not(target_arch = "wasm32"))] // Disabled on web because of the coarse 1ms clock resolution there. puffin::profile_scope!($($arg)*); }; } pub(crate) use profile_scope; } #[allow(unused_imports)] pub(crate) use profiling_scopes::*; // --------------------------------------------------------------------------- /// Panic in debug builds, log otherwise. macro_rules! log_or_panic { ($fmt: literal) => {$crate::log_or_panic!($fmt,)}; ($fmt: literal, $($arg: tt)*) => {{ if cfg!(debug_assertions) { panic!($fmt, $($arg)*); } else { log::error!($fmt, $($arg)*); } }}; } pub(crate) use log_or_panic;